【发布时间】:2014-05-30 09:54:28
【问题描述】:
我有一个带有四个标签的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,会发生什么情况?我需要沿着其所有子视图控制器的链传递消息...
【问题讨论】:
标签: ios uitabbarcontroller reloaddata