iOS 开发遇到的一些错误信息

1、错误:Warning: Attempt to present <UIAlertController: 0x7fd192806e20> on <ViewController: 0x7fd1928048d0> whose view is not in the window hierarchy!

出现这个问题原因是你使用的present的Controller并不是当前的controller,iOS系统的present操作,不允许同时存在两个present视图,在当前使用控制器是使用present方式突出的情况下,如果使用非当前controller去present意味着同时存在两个present出来的controller,所以会报错。解决办法就是获取当前正在使用的VC控制器对象,再进行present就可以了。

这里需要注意一下,push的出来的控制器不会影响模态跳转的逻辑,也就是说,如果一个控制器是在Nav下面,那不管使用Nav使用push挑战了多少级VC,都依然可以使用present,我们对于带有Nav的VC,是直接获取其Nav还是获取VC本身,效果都是一样,所以我们可以获取到present最顶层的VC就可以了,获取代码如下

+ (UIViewController *)appRootTopViewController

{
    
    UIViewController *RootVC = [UIApplication sharedApplication].keyWindow.rootViewController;
    
    UIViewController *topVC = RootVC;
    
    while (topVC.presentedViewController) {
        
        topVC = topVC.presentedViewController;
        
    }
    
    return topVC;
    //作者:3ac4789301e6
    //链接:https://www.jianshu.com/p/375846849597
    //来源:简书
    //简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容