NSNotification между родственными взглядами - PullRequest
1 голос
/ 16 апреля 2009

Используя UITabBar, у меня есть 4 одноуровневых представления (по одному на элемент вкладки). Когда приложение загружается, видны первая вкладка и вид. Это первое представление имеет IBAction, который публикует NSNotification. У каждого из трех других представлений есть наблюдатели для уведомления, но они не могут «услышать» уведомление, пока они не станут видимыми при прикосновении к элементу панели вкладок.

Можно ли отправить NSNotification наблюдателю-представителю NSNotification, относящемуся к брату, до того, как брат активируется, или способ загрузить родственные представления таким образом, чтобы они могли наблюдать уведомления без предварительной активации их?

Ответы [ 2 ]

3 голосов
/ 16 апреля 2009

родственные взгляды (или, возможно, точнее, двоюродный брат просмотров :), вероятно, не получают уведомления, потому что они еще не были созданы. Обычно контроллер представления создает свой вид (и подпредставления) при его первом отображении.

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

Вы не можете на самом деле переслать уведомление от контроллера представления в подпредставление, поскольку по той же причине вы будете пытаться передать представление, которое еще не было создано. Что вы должны сделать, это отслеживать состояние в контроллере представления, а затем настроить подпредставления соответствующим образом в viewDidLoad или loadView (в зависимости от того, используете ли вы NIB или нет).

0 голосов
/ 18 апреля 2009

решено -

В файле реализации делегата приложения:

- (void)applicationDidFinishLaunching:(UIApplication *)application {

    [window addSubview:tabBarController.view];

    self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:2];
    self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:1];
    self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:0];
}

Это загружает все (4) контроллеры представления, и все они немедленно слушают NSNotifications.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...