使用UITabBar,我有4个兄弟视图(每个标签项一个)。加载应用程序时,第一个标签项和视图是可见的。第一个视图有一个发布NSNotification的IBAction。其他三个视图中的每一个都有通知的观察者,但在通过触摸标签栏项目首次显示通知之前,他们无法“听到”通知。
是否可以在激活兄弟姐妹之前将NSNotification发布到兄弟视图的NSNotification观察者,或者以一种他们可以观察到通知而不先激活它们的方式加载兄弟视图?
答案 0 :(得分:3)
兄弟视图(或者更确切地说, cousin 视图:)可能没有收到通知,因为它们尚未实例化。通常,视图控制器在首次显示时实例化其视图(和子视图)。
您可能想要做的是让视图 controllers 处理通知而不是子视图。设置标签栏时会实例化视图控制器,因此他们应该可以立即接收通知。
您无法将通知从视图控制器转发到子视图,因为出于同样的原因,您将尝试向尚未实例化的视图发送消息。您应该做的是跟踪视图控制器中的状态,然后在viewDidLoad
或loadView
中相应地设置子视图(取决于您是否使用NIB)。
答案 1 :(得分:0)
已解决 -
在应用程序委托实现文件中:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[window addSubview:tabBarController.view];
self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:2];
self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:1];
self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:0];
}
这会加载所有(4)个视图控制器,它们都会立即收听NSNotifications。