На iPad я отображаю viewController, используя -presentModalViewController:animated:
, а затем этот viewController отображает второй модальный viewController, также вызывая -presentModalViewController:animated:
.
Проблема в том, что второй viewController не загружает свой NIB.Глядя в отладчик, все элементы UIView установлены в nil, и -viewDidLoad
не вызывается.
Однако, если я перейду непосредственно ко второму диалогу из первого UIViewController, NIB загружается правильно,В соответствии с документацией Apple, толкание нескольких загруженных UIViewController должно быть возможным (см. Обсуждение -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];
}