管理NSNotification以及UITabBarController交互

时间:2010-08-23 18:13:05

标签: iphone objective-c uiviewcontroller uitabbarcontroller nsnotifications

我有一个主要的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。

2 个答案:

答案 0 :(得分:1)

视图控制器将始终在启动时加载,除非您对NIB文件做了一些非常奇怪的事情。

控制器的视图可能尚未加载,但您可以通过调用[fourthController view](或者,如果适用,[self view])强制执行此操作你操纵那个视图的表。

答案 1 :(得分:0)

如果需要,可以有许多收件人收到通知。为什么不让您的其他视图只是听取相同的通知,并根据UserInfo选择所需的表。

我明白了吗?