HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 更新UITabBarController的所有视图控制器大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个带有四个选项卡的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会发生什么?我需要沿着所有子视图控制器的链传递消息…

@L_772_9@

通知听起来更适合这种情况.当需要重置视图控制器时,广播Nsnotification并让任何可能需要重置的视图控制器监听该通知,并触发他们需要执行的操作.这样,它们在导航堆栈的下方距离无关紧要.

您可能希望推迟更新,直到视图实际显示为止.您可以在VC接收通知时设置BOOL needsupdate,但仅在viewWillAppear:中执行实际更新,以节省资源并防止大量更新立即关闭(并且可能阻止主线程).

如果这种行为对于所有视图控制器都是通用的,那么创建一个UIViewController子类以防止重复代码并让它们全部继承.或者,(如果您正在使用Apple VC子类)在UIViewController上创建一个类别以添加通知方法.

大佬总结

以上是大佬教程为你收集整理的ios – 更新UITabBarController的所有视图控制器全部内容,希望文章能够帮你解决ios – 更新UITabBarController的所有视图控制器所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。