每天早上打开电脑,例行检查崩溃情况统计,发现了一个新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;; }
网友评论