我有一个带有四个选项卡的
UITabBarController
。在每个选项卡所选的视图控制器中,我都有一个重置按钮。点击该按钮将更改所有视图控制器的外观。特别地,它将更改不同视图控制器中某些标签的文本。
是否有一种推荐的方法可以同时更新UITabBarController
的所有视图控制器,即使它们重新加载其视图?
我的当前方法是使这些视图控制器符合一个协议。
@protocol XYReloadableViewController
- (void)reloadContents;
@end
当按钮被点击时,向所有视图控制器发送消息-reloadContents
:
- (IBAction)touchUpInsideResetButton {
// ...
NSArray *viewControllers = self.tabBarController.viewControllers;
for (UIViewController<XYReloadableViewController> *viewController in viewControllers) {
[viewController reloadContents];
}
}
然后在每个视图控制器中,我都需要实现该方法:
- (void)reloadContents {
[self.tableView reloadData];
// other updates to UI ...
}
但是这似乎有点太复杂了。那么,有没有更简单的方法告诉视图控制器重新加载它们的视图?
编辑:如果我在某些选项卡中呈现了UINavigationController
或容器视图控制器,会发生什么情况?我需要将消息传递给所有子视图控制器的链...