在iPad上,我使用-presentModalViewController:animated:
顯示一個viewController,然後viewController通過調用-presentModalViewController:animated:
顯示第二個模式viewController。IBOutlets在presentModalViewController之後無視圖並加載視圖:animated:
問題是第二個viewController不會加載它的NIB。查看調試器,所有UIView元素都設置爲零,並且-viewDidLoad
不會被調用。
但是,如果我直接從第一個UIViewController進入第二個對話框,則NIB會正確加載。根據Apple文檔,推送多個加載的UIViewControllers應該是可能的(請參閱-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];
}
你如何聲明iPadDevice?它是一個實例變量? – griotspeak 2010-11-16 21:09:20
我使用此功能兌現該結果作爲一個實例變量: – 2010-11-17 01:53:57
- (BOOL)iPadDevice { 如果([[的UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)]){ 回報([的UIDevice currentDevice] .userInterfaceIdiom == UIUserInterfaceIdiomPad ); } return NO; } – 2010-11-17 01:54:15