簡體   English   中英

UIWindow啟動后會丟失rootviewcontroller

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM