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

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

-[UIApplicationRotationFollowingController setSelectedIndex:]: unrecognized selector sent to inst..._第1张图片
出现崩溃的代码
崩溃原因

看起来上段代码没有什么问题,可是当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;; }

你可能感兴趣的:(-[UIApplicationRotationFollowingController setSelectedIndex:]: unrecognized selector sent to inst...)