我有1个主UIViewController包含UITabBarController。标签栏控制器有4个UIViewControllers(每个由UINavigationControllers管理)。简单地说,它看起来像这样:管理NSNotification与UITabBarController交互
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。
我相信其他视图控制器可能不会在事件被引发时被初始化(并且因此将无法听到事件)。这是假设视图控制器初始化,直到他们的选项卡被选中。 – pschang 2010-08-23 18:51:50
在这种情况下,可以使用NSUserDefaults来传递此信息。您将UserData写入NSUserDefaults,并在新的视图首次加载时从该空间入手。一旦加载,它可以监听通知中的数据。 – 2010-08-23 21:37:21