UINavigationBar在推送视图动画之前消失,然后出现.怎么了



我有三个视图和一个带有背景图像的导航栏。当我按下第二个视图时,一切都会正常进行:导航栏与背景图像保持在同一位置,只是标题和按钮向左滑动,然后被第二个查看的"后退"按钮和新标题所取代。但当我推送第三个视图时,过渡是这样的:就在动画之前,导航栏完全消失了,应用程序的窗口背景色留在了它的位置,然后,新的导航栏从右边滑动所有的ui元素。当我弹出第三个视图(按下"后退按钮")时也是如此。有什么想法吗,为什么会发生?以前这很正常,但在某个时候我注意到它开始这样工作。

只是出于好奇,您在推到堆栈上的视图中有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:]"的两个调用

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

希望有人会发现这个帖子有用!

您没有在主导航控制器上推送UINavigationController?

相关内容

最新更新