【问题标题】:close app and launch webview on appstart关闭应用并在 appstart 上启动 webview
【发布时间】:2017-06-11 19:30:52
【问题描述】:

我已发出 api 请求以从我的后端服务获取一些详细信息:

我想关闭我当前的视图控制器并通过从后端传入的 url 启动一个新网页:

NSDictionary *parameters = @{@"X-Service-Code" : @"PP", @"Accept" : @"application/json", @"Content-Type" : @"application/json"};
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    [manager GET:url1 parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {


        NSMutableArray *jsonArray = [[NSMutableArray alloc]init];
        jsonArray = [NSJSONSerialization JSONObjectWithData: responseObject options:NSJSONReadingMutableContainers error:nil];


        [self dismissViewControllerAnimated:YES completion:nil];


        NSString *urlAddress = [[jsonArray objectAtIndex:10]valueForKey:@"value"];
        [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlAddress]]];


    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];

webview 正在后台启动,但是视图控制器没有被关闭。有什么建议吗?

【问题讨论】:

  • 即使您已经关闭了 self,您仍在显示 self.webView?我有点迷路了。我不认为这是"because its not performed on the main thread thing" 的问题,因为如果您不设置完成队列,它将始终在主队列完成,除非您指定afnetwork 的completionQueue 以使用不同的队列。

标签: ios objective-c iphone xcode webview


【解决方案1】:

dismissViewControllerAnimated需要在主线程上调用:

dispatch_async(dispatch_get_main_queue(), ^{
    [self dismissViewControllerAnimated:YES completion:nil];
});

【讨论】:

    【解决方案2】:

    尝试在主线程上运行关闭代码:

    dispatch_async(dispatch_get_main_queue(), ^{
        [self dismissViewControllerAnimated:YES completion:nil];
    });
    

    【讨论】:

    • 我是在 viewdidload 还是 viewwillappear 上调用这个过程?
    • 好的,AFHTTP 库似乎将在主线程stackoverflow.com/a/28932187/8085849 上调度其回调,因此不需要 dispatch_async。在这种情况下,您如何确定成功:块实际上被调用了?请求是否确定成功完成?即你确定失败:块没有被调用?
    • 最好从 viewWillAppear 方法发出 http 请求。
    • 是的,我已经验证调用成功执行。但我在 viwdidload 中调用该过程。让我试试 viewwillappear
    • 也许是因为我从 api 获取 url。加载网页视图的速度不够快?
    猜你喜欢
    • 2011-01-03
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    相关资源
    最近更新 更多