我有1个主UIViewController,其中包含一个UITabBarController。标签栏控制器具有4个UIViewControllers(每个UIViewControllers由UINavigationControllers管理)。简而言之,它看起来像这样:
MainViewController
|
| --- FirstUIViewController
|
| --- SecondUIViewController
|
| --- ThirdUIViewController
|
| --- FourthUIViewController
默认情况下,FirstUIViewController已加载。
在SecondUIViewController中,可能发生一个事件。此事件具有与之一起传递的特定数据。当此事件发生时,我希望发生两件事:
1)要在选项卡栏控制器中选择以可视方式显示另一个选项卡的FourthUIViewController,已输入。
2)在ThirdUIViewController中的后续操作,其中选择了特定的UITableViewCell。所选单元格由事件中传递的数据确定。
为了做到这一点,我在MainViewController中创建了一个NSNotification观察器。它从SecondUIViewController监听事件,并通过userInfo从事件获取数据。
我也知道从MainViewController可以轻松地在UITabBarController上设置selectedIndex,以便显示正确的选项卡。 (排名第一)。
但是,完成#2让我感到困惑。我不知道如何(正确地,正确地)设置选项卡栏的selectedIndex,然后让FourthUiViewController对选定的单元格起作用。我的假设是在此事件发生之前可能尚未加载FourthUIViewController,因此我无法设置任何参数或调用任何观察者。
也许更广泛的问题是,通过选项卡选择加载UIViewController时如何传递数据(与推送一个非常简单的新UIViewController相比)。
TIA。
最佳答案
除非您对NIB文件做得很奇怪,否则视图控制器将始终在启动时加载。
可能未加载控制器的视图,但是您可以在操作该视图的表之前调用[fourthController view]
(或者,如果合适,使用[self view]
)来强制执行该操作。