У меня есть делегат приложения, представлению которого по умолчанию должен предшествовать контроллер модального представления, а иногда и два контроллера модального представления. Итак, в делегате приложения didFinishLaunchingWithOptions
я проверяю, нужен ли и в этом случае отображает первый контроллер модального представления.
После закрытия первого контроллера модального вида (используя [self dismissModalViewControllerAnimated:YES];
) я могу захотеть отобразить второй контроллер модального вида. Это известно и делегату приложения.
Таким образом, мое решение состояло в том, чтобы использовать NSNotificationCenter
, чтобы сообщить делегату приложения, что первый контроллер модального представления теперь отклонен. Когда это происходит, второй модальный контроллер представления может отображаться делегатом приложения, если это необходимо.
Работает нормально, но есть ли более чистое решение? Я думаю, что NSNotificationCenter
действительно ужасно.
Примечание по отображению нескольких контроллеров модального вида одновременно
Я пытался отобразить первый И второй контроллер модального вида внутри didFinishLaunchingWithOptions
, но у меня так и не получилось. Вот что я попробовал:
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[window setRootViewController:tabBarController];
[self.window makeKeyAndVisible];
[tabBarController presentModalViewController:pinViewController animated:NO];
if([self needsActivation]) {
[tabBarController presentModalViewController:activationViewController
animated:YES];
}
}
ОБНОВЛЕНИЕ: Приведенный выше код работает со следующим исправлением:
if([self needsActivation]) {
[pinViewController presentModalViewController:activationViewController
animated:YES];
}