-[UIApplicationRotationFollowingController setSelectedIndex:]: unrecognized selector sent to inst...

每天早上打开电脑,例行检查崩溃情况统计,发现了一个新bug。然而看了代码,貌似没问题啊,后来研究一番发现了这个bug。话不多说,上代码。。。

出现崩溃的代码
崩溃原因

看起来上段代码没有什么问题,可是当UIAlertView的出现的同时然后调图中的代码就出现UIApplicationRotationFollowingController。因为UIAlertView出现生成了一个新的window,加在了界面上面。在新建的window上展示的,所以keyWindow已经改变了,无法通过[UIApplicationsharedApplication].keyWindow获取rootViewController。这个时候获取到的keyWindow就是UIAlertControllerShimPresenterWindow。而此时keyWindow的rootViewController就是UIApplicationRotationFollowingController。然后当然了,找不到方法导致崩溃。

解决办法如下:

1、首先,获取rootViewController方式应该为: UITabBarController *tab =(UITabBarController *)[UIApplication sharedApplication].delegate.window.rootViewController;                                                   2、判断类型是否正确: if (tab && [tab isKindOfClass:[UITabBarController class]]) { tab.selectedIndex = 2;; }

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

推荐阅读更多精彩内容