gpt4 book ai didi

ios - UIWindow 在启动后丢失 rootviewcontroller

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:44:07 26 4
gpt4 key购买 nike

我的应用程序有一个带有正确设置的 Root View Controller 的 UIWindow。我知道这一点是因为我在设置 rootViewController 后(在应用程序委托(delegate)中)检查它,一切都很好。

“我的应用”启动后,一切正常。我的问题是,当我 checkin “主” View 时, Root View Controller 不再在 UIWindow 上正确设置。

我的应用程序运行良好.. 那么您可能想知道问题是什么...好吧,我正在尝试实现 AdColony(视频广告),他们需要获取 UIWindow 的 rotviewcontroller 来显示他们的广告。当他们检查 rootviewcontroller 时...它是空的。

我也添加了代码来检查.. rootviewcontroller 为空。

我的 UIWindow 怎么会丢失它指向 rootviewcontroller 的指针?我需要帮助了解 UIWindow 架构的工作原理。

谢谢

检查 UIWindow 的可见 Controller 的代码(下面的代码为 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(我假设您是从 View Controller 执行此操作):

self.view.window.rootViewController

关于ios - UIWindow 在启动后丢失 rootviewcontroller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15651030/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com