[英]presentModalViewController:animated: crash after dismiss
[英]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.