Управление NSNotification вместе с взаимодействиями UITabBarController - PullRequest
2 голосов
/ 23 августа 2010

У меня есть 1 основной UIViewController, который содержит UITabBarController.Контроллер панели вкладок имеет 4 UIViewControllers (каждый управляется UINavigationControllers).Вкратце, это выглядит так:

MainViewController
   |
   |--- FirstUIViewController
   |
   |--- SecondUIViewController
   |
   |--- ThirdUIViewController
   |
   |--- FourthUIViewController

FirstUIViewController загружается по умолчанию.

В SecondUIViewController есть событие, которое может произойти.Это событие имеет определенные данные, которые передаются вместе с ним.Когда происходит это событие, я хочу, чтобы произошло 2 события:

1) В контроллере панели вкладок должен быть выбран FourthUIViewController, чтобы визуально показать, что была введена другая вкладка.

2) Последующее действие вЧетвёртыйUIViewController, где выбран определенный UITableViewCell.Выбранная ячейка определяется данными, которые передаются в событии.

Для этого я создал наблюдатель NSNotification в MainViewController.Он прослушивает событие из SecondUIViewController и получает данные от него через userInfo.

Я также знаю, что из MainViewController я могу легко установить selectedIndex на UITabBarController, чтобы отобразить правильную вкладку.(# 1 выполнено).

Однако выполнение # 2 сбивает меня с толку.Я не знаю, как (правильно, правильно) установить selectedIndex панели вкладок, а затем заставить FourthUiViewController воздействовать на выбранную ячейку.Я предполагаю, что FourthUIViewController, возможно, не был загружен до того, как это событие произойдет, поэтому я не смог установить какие-либо параметры или вызвать каких-либо наблюдателей.

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

TIA.

Ответы [ 2 ]

1 голос
/ 31 декабря 2010

Представление контроллер всегда будет загружаться при запуске, если вы не сделали что-то очень странное с вашим файлом NIB.

Возможно, что представление контроллера не будет загружено, но вы можете заставить это произойти, вызвав [fourthController view] (или, при необходимости, [self view]), прежде чем манипулировать таблицей этого представления. .

0 голосов
/ 23 августа 2010

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

Я правильно понял?

...