美文网首页
iOS开发presentViewController延迟跳转或者

iOS开发presentViewController延迟跳转或者

作者: HoFie | 来源:发表于2018-02-02 17:15 被阅读692次

    最近在做项目,用到了presentViewController:animated:completion方法。刚开始在模拟器上跳转有延迟,如果连续点击两次就可以跳转。然后用真机测试发现又没这种问题,所以我就当做是模拟器有问题了。

    但是今天我在手机上点击跳转却发现出现了延迟,大概三四秒才跳转。而且如果在延迟没跳转的时候你再点击屏幕,就会跳转。对于这种情况我就感觉是代码问题了。

    首先打印了当前线程是主线程,测试了几次,感觉不是控制器的原因。打印输出都没问题,但就是不跳转,没办法。我就异步开启主线程执行跳转:

    EXMSettingsController *settingsController = [[EXMSettingsController alloc] init];
                    
                    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:settingsController];
                    settingsController.view.backgroundColor = [UIColor colorWithHexString:@"#F0F0F0"];
                    
                    dispatch_async(dispatch_get_main_queue(), ^{
                        [weakSelf presentViewController:navController animated:YES completion:nil];
                    });
    

    这样好像挺好使,先这么用着吧。

    后面网上查了下,主动唤起主线程再执行跳转也可以:

    [self performSelectorOnMainThread:@selector(presentViewController) withObject:nil waitUntilDone:NO];
    

    然后在presentViewController方法中执行跳转代码。

    目前就知道这样解决可行,但是引起这个问题的原因就不得而知了。

    如果有知道的欢迎留言补充,谢谢!

    相关文章

      网友评论

          本文标题:iOS开发presentViewController延迟跳转或者

          本文链接:https://www.haomeiwen.com/subject/zvyezxtx.html