繁体   English   中英

在presentModalViewController:animated之后,IBOutlets为零且视图未加载:

[英]IBOutlets nil and view not loading after presentModalViewController:animated:

在iPad上,我使用-presentModalViewController:animated:显示一个viewController,然后该viewController通过调用-presentModalViewController:animated:显示第二个模态viewController。

问题是第二个viewController似乎没有加载其NIB。 在调试器中查看,所有UIView元素均设置为nil,并且-viewDidLoad不会被调用。

但是,如果我直接从第一个UIViewController转到第二个对话框,则NIB将正确加载。 根据Apple文档,应该有可能推送多个加载的UIViewController(请参阅-dismissModalViewControllerAnimated:讨论-dismissModalViewControllerAnimated:有关连续加载的多个模式UIViewController的讨论)。

下面是我用于调用第二个模式UIViewController的代码(第一个使用基本上相同的代码来调用)。 dialog.delegate基于Apple用于实用程序flipSideController示例代码的相同代码,并且仅用于通知父对话框已准备好关闭。

- (void) displayNewGameDialog {
    NewGameDialog * dialog;

    if (iPadDevice) {
        dialog = [[NewGameDialog alloc] initWithNibName:@"NewGameDialog-iPad" 
                                                 bundle:nil];
        dialog.modalPresentationStyle = UIModalPresentationFormSheet;
    } else {
        dialog = [[NewGameDialog alloc] initWithNibName:@"NewGameDialog" 
                                                 bundle:nil];
    }

    dialog.delegate                 = self;
    dialog.modalTransitionStyle     = UIModalTransitionStyleCrossDissolve;
    dialog.player                   = self.player;

    [self presentModalViewController:dialog animated:YES];
    [dialog autorelease];
}

我想出了问题所在...

第一个viewController显示一个文档类型窗口,在它的-viewDidLoad方法中,我告诉第二个对话框出现。 因为他们俩都使用动画效果,所以他们互相踩着脚趾,并且第二个viewController从未正确加载。

答案是在初始化对话框之前,使用-performSelector:withObject:afterDelay:将延迟一秒。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM