我有三个视图和一个带有背景图像的导航栏。当我按下第二个视图时,一切都应该如此:导航栏停留在其背景图像的位置,只是标题和按钮向左滑动并被“后退”按钮替换为第二个视图的新标题。但是当我推动第三个视图时,过渡就像这样:在动画之前,导航栏完全消失,将应用程序的窗口背景颜色留在其位置,然后,新的导航栏从右侧滑动所有ui元素。当我弹出第三个视图(按下“后退按钮”)时也一样。 任何想法,为什么会发生?这是正常的,但在某些时候,我注意到它开始像这样工作。
答案 0 :(得分:1)
出于好奇,你在推进堆栈的视图中是否有UISearchBar?我遇到了与你描述的完全相同的问题,原来它是由UISearchBar和UISearchDisplayController引起的。
创建UISearchBar和UISearchDisplayController时,我正在调用
self.searchBar = [[[UISearchBar alloc] init] autorelease];//init the UISearchBarView
then somewhere further along in the code I was calling
[self.searchDisplayController setActive:YES animated:NO];
[self.searchDisplayController setActive:NO animated:NO];
以上两次调用“[setActive:animated:]”会因某种未知原因正确布局UISearchBar。我在互联网的很多地方都看到了这个解决方案。但副作用是当推送具有搜索栏的新视图时导航栏变为白色。
为了解决所有问题,我通过调用:
来初始化UISearchBarself.searchBar = [[[UISearchBar alloc] initWithFrame:frame] autorelease];
然后我删除了两个调用“[setActive:animated:]”
此更改导致搜索栏布局正确,没有消失的导航栏。
希望有人会发现这篇文章很有用!
答案 1 :(得分:0)
您是不是在主导航控制器的顶部推动UINavigationController?