0

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

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

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

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

当它弹出时我需要

self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque;

4

3 回答 3

1

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

我将对其进行架构,以便顶级导航控制器将自己设置为孩子的委托,并且孩子使用“我正在卸载”类型的函数调用它的委托,您可以在其中更改导航栏样式。

于 2010-01-12T23:35:41.357 回答
1

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

于 2014-03-20T19:46:10.007 回答
0

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

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

于 2010-01-12T23:31:48.340 回答