Ios UINavigationBar在按下视图动画之前消失,并在其之后出现。怎么了?

Ios UINavigationBar在按下视图动画之前消失,并在其之后出现。怎么了?,ios,uinavigationcontroller,uinavigationbar,Ios,Uinavigationcontroller,Uinavigationbar,我有三个视图和一个带有背景图像的导航栏。当我按下第二个视图时,一切都像它应该的那样:导航栏保持在它的位置上,有背景图像,只是标题和按钮向左滑动,被第二个视图的“后退”按钮和新标题替换。但当我推第三个视图时,过渡是这样的:就在动画之前,导航栏完全消失,将应用程序的窗口背景色保留在原来的位置,然后,新的导航栏从右侧滑动,包含所有ui元素。当我弹出第三个视图(按下“后退按钮”)时也是如此。 有什么想法,为什么会这样?以前这很正常,但在某个时候我注意到它开始像这样工作。您没有将UINavigationC

我有三个视图和一个带有背景图像的导航栏。当我按下第二个视图时,一切都像它应该的那样:导航栏保持在它的位置上,有背景图像,只是标题和按钮向左滑动,被第二个视图的“后退”按钮和新标题替换。但当我推第三个视图时,过渡是这样的:就在动画之前,导航栏完全消失,将应用程序的窗口背景色保留在原来的位置,然后,新的导航栏从右侧滑动,包含所有ui元素。当我弹出第三个视图(按下“后退按钮”)时也是如此。
有什么想法,为什么会这样?以前这很正常,但在某个时候我注意到它开始像这样工作。

您没有将UINavigationController推到主导航控制器的顶部?

只是出于好奇,您推到堆栈上的视图中是否有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。我在互联网上的许多地方都看到过这种解决方案。但一个副作用是,当推一个有搜索栏的新视图时,导航栏会变成白色

要修复所有问题,我通过调用以下命令初始化了UISearchBar:

self.searchBar = [[[UISearchBar alloc] initWithFrame:frame] autorelease];
然后我删除了对“[setActive:animated:]”的两个调用

这一变化导致了一个布局合理的搜索栏,而没有消失的导航栏


希望有人会觉得这篇文章有用

我想没有。但是我怎么能检查它呢?在NSLog中打印当前导航控制器的描述和内存地址。是的,导航控制器的地址是相同的:我在按下第三个视图之前(在tableview中的单元格选择)和显示第三个视图之后(ViewDidDisplay:)记录了它们的描述<代码>-[IVServerListViewController表视图:DIDSelectRowatingIndexPath:]:导航控制器:和
-[IVVideoViewController视图显示:]:导航控制器:
您能发布您的代码吗?没有细节很难理解发生了什么。谢谢你的回复,但不,我没有使用搜索栏。实际上,我发现了问题——我有意识地隐藏和显示导航栏,因为我在横向模式下导航时遇到了问题——在从全屏第二视图返回到非全屏第一视图后,状态栏与导航栏重叠。现在一切都好了。