![](/img/trans.png)
[英]iOS app crashing after setting UIWindow rootViewController in iOS 9
[英]UIWindow loses rootviewcontroller after launch
我的应用程序有一个带有正确设置的rootview控制器的UIWindow。 我知道这一点是因为我在设置了它之后(在应用程序委托中)检查了rootViewController,一切都很好。
我的应用启动后,一切正常。 我的问题是,当我在“主”视图中签入时,rootview控制器在UIWindow上的设置不再正确。
我的应用程序正常运行..所以您可能想知道的问题是...我正在尝试实现AdColony(视频广告),他们需要抓住UIWindow的rotviewcontroller来展示广告。 当他们检查rootviewcontroller ...时为null。
我也添加了要检查的代码..而rootviewcontroller为null。
我的UIWindow如何丢失指向rootviewcontroller的指针? 我需要帮助来了解UIWindow体系结构的工作方式。
谢谢
检查UIWindow的可见控制器的代码(以下代码为viewcontrollers值返回nil。
UIWindow* window = [UIApplication sharedApplication].keyWindow;
UIViewController* rootViewController = [window rootViewController];
[self getVisibleViewControllerChild:rootViewController];
- (UIViewController*)getVisibleViewControllerChild:(UIViewController*)viewController {
UIViewController* visibleViewController = nil;
if(!viewController) {
NSLog(@"nil");
return nil;
}
if ([viewController isKindOfClass:[UINavigationController class]]) {
UINavigationController* navigationController = (UINavigationController*)viewController;
viewController = navigationController.visibleViewController;
NSLog(@"viewcontroller is nav controller");
}
while (visibleViewController == nil) {
if (viewController.modalViewController == nil) {
visibleViewController = viewController;
NSLog(@"visibleViewController = %@", visibleViewController);
} else {
if ([viewController.modalViewController isKindOfClass:[UINavigationController class]]) {
UINavigationController *navigationController = (UINavigationController *)viewController.modalViewController;
viewController = navigationController.visibleViewController;
NSLog(@"modal 1");
} else {
viewController = viewController.modalViewController;
NSLog(@"modal 2");
}
}
}
return visibleViewController;
}
我无法真正弄清楚您要使用此代码做什么,但是方法keyWindow似乎返回nil,因此rootViewController也将为nil。 我不确定为什么会这样,但是您可以使用rootViewController(我假设您正在从视图控制器执行此操作):
self.view.window.rootViewController
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.