0

我有一个使用导航栏的应用程序。我想要实现的是当我从导航序列中推入最后一个视图时使其透明,并使其不透明当我单击导航后退按钮时Iphone UINavigationController onchange事件

我试着用dealoc,但它不起作用。我的观点是一个UIScrollView不是一个UiView,但我想这没有什么区别。

在我看来,eighter我必须控制的导航栏上的事件,和看风景的类型与循环或在我目前的看法“卸载”触发一些事件

当我推在视图中我做了 self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;

并且当弹出我需要的

self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque;

+0

我从来没有见过透明的NavBar。你能指点我一个屏幕截图还是有这个的应用程序,所以我可以看到你指的是什么? – 2010-01-12 22:24:37

+0

当然你有。使用内置的照片应用程序查看一些照片。 – Nimrod 2010-01-12 23:28:14

回答

1

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

我建立它,以便顶级导航控制器将自己设置为孩子的委托,并且孩子用更改导航栏样式的“我正在卸载”类型函数调用它的delgate。

0

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

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

1

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