У меня есть 1 главный UIViewController, который содержит UITabBarController. Контроллер панели вкладок имеет 4 UIViewControllers (каждый из них управляется UINavigationControllers). Сжато, это выглядит следующим образом:Управление NSNotification вместе с взаимодействиями UITabBarController
MainViewController | |--- FirstUIViewController | |--- SecondUIViewController | |--- ThirdUIViewController | |--- FourthUIViewController
FirstUIViewController загружается по умолчанию.
В SecondUIViewController есть событие, которое может произойти. Это событие содержит конкретные данные, которые передаются вместе с ним. Когда это событие произойдет, я хочу, чтобы произошло 2 события:
1) Был введен четвёртый переключатель, который будет выбран в контроллере панели вкладок для визуального отображения другой вкладки.
2) Последующее действие в FourthUIViewController, в котором выбран конкретный UITableViewCell. Выбранная ячейка определяется данными, которые передаются в событии.
Для этого я создал наблюдателя NSNotification в MainViewController. Он прослушивает событие от SecondUIViewController и получает данные от него через userInfo.
Я также знаю, что из MainViewController я могу легко установить selectedIndex на UITabBarController, чтобы отобразить правильную вкладку. (№ 1 выполнено).
Однако выполнение # 2 меня перегородок. Я не знаю, как (правильно, правильно) установить selectedIndex на панели вкладок, а затем активировать действие FourthUiViewController на выбранную ячейку. Мое предположение заключается в том, что FourthUIViewController, возможно, не был загружен до возникновения этого события, поэтому я не мог установить какие-либо параметры или вызвать каких-либо наблюдателей.
Возможно, более широкий вопрос заключается в том, как данные могут передаваться при загрузке UIViewController посредством выбора вкладки (по сравнению с нажатием нового UIViewController, который очень прост).
TIA.
Я считаю, что другой контроллер представления не может быть инициализирован во время вызова события (и, следовательно, не сможет прослушать событие). Это предполагает, что контроллеры представлений инициализируются до тех пор, пока их вкладка не будет выбрана. – pschang
В этом случае может быть возможно использовать NSUserDefaults для передачи этой информации. Вы пишете UserData в NSUserDefaults и новые элементы представления из этого пространства при первой загрузке. После загрузки он может прослушивать данные из уведомления. –