NSNotificationCenter для представления нескольких модальных? - PullRequest
1 голос
/ 12 июля 2011

У меня есть делегат приложения, представлению которого по умолчанию должен предшествовать контроллер модального представления, а иногда и два контроллера модального представления. Итак, в делегате приложения 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];
    }

1 Ответ

1 голос
/ 12 июля 2011

В данном конкретном случае не было нужды в NSNotificationCenter, как я думал. Я пытался отобразить несколько контроллеров модального представления, но сделал ошибку.

При отображении контроллера модального вида B с контроллера модального вида A он работает нормально. Я пытался представить модальный контроллер вида A и B из родительского контроллера вида.

Таким образом, вместо представления контроллеров модальных представлений в иерархии NSNotificationCenter не требуется. Контроллеры вида закрывают себя, анимация работает, и я на шаг вперед к тому, чтобы согнуть UIKit под свою волю.

Я отредактировал код в своем вопросе, который теперь отлично работает.

...