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

1、错误:Warning: Attempt to present on 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
    //来源:
    //著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
}

你可能感兴趣的:(iOS 开发遇到的一些错误信息)