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