【问题标题】:viewWillAppear in viewcontrollers of a tabbarviewWillAppear 在标签栏的视图控制器中
【发布时间】:2011-03-17 09:00:54
【问题描述】:

在我的标签栏中,我有四个视图控制器,其中一个视图控制器中发生的事情会影响另一个视图控制器的视图,因此当视图控制器可见时,我可能需要重新加载视图控制器中的一些元素。通常我会通过实现 viewWillAppear 来解决这个问题,但是当我在选项卡之间切换时,viewWillAppear 似乎没有被调用。我该如何解决这个问题,或者我应该怎么做?

更新:作为 PS,我应该补充一点,这是导航控制器层次结构中的标签栏控制器

干杯

尼克

【问题讨论】:

标签: cocoa-touch uiviewcontroller uitabbarcontroller viewwillappear


【解决方案1】:

viewWillAppear 应该只在视图出现时使用,而不是用于更新它。

viewController 的视图上使用setNeedsDisplay

【讨论】:

  • 我应该从哪里调用 setNeedsDisplay?问题是当用户从标签栏中选择一个新的视图控制器时,我需要一个钩子
  • 哦,对不起,我把这里的东西搞混了。我不确定为什么 viewWillAppear 没有被调用,但我知道一种解决方法:让一些对象成为 tabBarController 委托,它会发送消息,选择一个新视图,调用视图将从那里出现.
  • 听起来很有趣,我明天试试看 :-)
【解决方案2】:

【讨论】:

    【解决方案3】:

    你可以使用 tabbar 控制器代理,就像一个魅力一样

    -(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { [viewController viewWillAppear:YES]; }

    【讨论】:

      【解决方案4】:

      如果您发现这个问题是因为您想更新UITabBarController 本身的内容,而不是UITabBarControllerUIViewControllers,就像OP 的问题一样。例如,隐藏或显示自定义UITabBarButton。在 Swift 3.0 中,覆盖我的 UITabBarController 类的 setNeedsStatusBarAppearanceUpdate 对我有用。

      override func setNeedsStatusBarAppearanceUpdate() {
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多