【问题标题】:Iphone UINavigationController onchange eventIphone UINavigationController onchange 事件
【发布时间】:2010-01-12 22:18:02
【问题描述】:

我有一个使用导航栏的应用程序。我想要完成的是当我从导航序列中推入最后一个视图时使其透明,并在我单击导航上的后退按钮时使其不透明

我尝试过使用dealoc,但它不起作用。我的视图是 UIScrollView 而不是 UiView,但我想这没什么区别。

正如我所见,我必须控制导航栏上的事件,并通过循环查看视图的类型或在当前视图的“卸载”时触发某些事件

当我推入视图时,我会执行 self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;

当它弹出时我需要

self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque;

【问题讨论】:

  • 我从未见过透明的导航栏。您能否指点我的屏幕截图或具有此功能的应用程序,以便我可以看到您指的是什么?
  • 当然有。使用内置的照片应用程序查看一些照片。

标签: iphone events uinavigationcontroller controller navigationcontroller


【解决方案1】:

使用 UINavigationController 或 UITabController 推送和弹出视图将调用视图 {Will,Did}{Appear,Disappear} 方法,所以我认为您需要挂钩到子视图的 ViewWillDisappear。

我会构建它,以便顶级导航控制器将自己设置为子代理,并且子通过“我正在卸载”类型的函数调用它的代理,您可以在其中更改导航栏样式。

【讨论】:

    【解决方案2】:

    实际上最好的方法是使用 UINavigationControllerDelegate。我扩展了 UINAvigationController 并将委托设置为 self 并使用了 UINavigationControllerDelegate 协议的方法之一。

    【讨论】:

      【解决方案3】:

      你不能真的依赖 dealloc 来调用它,更不用说当你想要它的时候了。这应该只用于释放保留的对象。

      我认为您应该能够在视图控制器的 viewDidAppear 和 viewDidUDisappear 方法中添加 barStyle 更改。

      【讨论】:

        猜你喜欢
        • 2011-04-13
        • 2021-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-17
        • 2012-04-09
        • 2014-09-02
        • 2014-05-05
        相关资源
        最近更新 更多