我没有幸运地搜索到这个,所以我们开始吧;)
我有一个带有自定义UINavigationBar
的UIViewController
,它推送另一个UIViewController
作为子视图。
除了单击子视图上的后退按钮外,一切都很好。预览(第一个)视图显示正确,但未设置动画。UINavigationBar
的动画是正确的,只有视图会立即切换。
第一个UIViewController
的函数- (void)viewWillAppear:(BOOL)animated
用NO
来调用animated
。这只发生在我用iOS 5测试时,而不是用iOS 4测试时。
有人知道怎么解决这个问题吗?
谢谢你的帮助!Hannes
更新1
我只是删除了所有的自定义代码,只使用了普通的UINavigationBar
(所以没有额外的设置),它仍然不能与iOS5一起使用。这是我在第一个ViewController中用来推送第二个ViewController的代码:
[self.navigationController pushViewController:secondViewController animated:YES];
正如我已经提到的,当我在第二个视图上单击导航栏中的后退按钮时,第一个视图将立即显示,没有动画。
任何帮助都将不胜感激!谢谢
更新2
我觉得我离这个问题越来越近了,但仍然没有解决方案:
我刚刚添加了一个自定义的UINavigationController
,在这里我只调用[super popViewControllerAnimated:animated]
。该get调用正确(animatized为YES),但第一个UIViewController
的viewWillAppear
的值为NO作为animatized。。。
我今天遇到了类似的问题,除了标准的UINavigationBar
和UINavigationController
外,UIViewController
在viewWillAppear
中得到NO。
事实证明,这是由于在不该出现的地方手动调用viewWillAppear:YES
。此项表明,它也可能是由于在某个地方调用了错误的super
方法(例如viewDidAppear
内部的[super viewWillAppear:animated]
而不是[super viewDidAppear:animated]
)而引起的。
至于使用自定义UINavigationBar
,我今天看到了这个链接,它可能对您的情况有所帮助:http://sloshire1.posterous.com/simple-fix-for-viewwillappear-in-ios5
Apple在iOS 5中实现了创建自定义导航栏的官方方法。不幸的是,他们也打破了iOS 4中大多数非官方的操作方式。iOS 5将不再为您调用drawRect。你需要有两种方法来做到这一点,一种用于iOS 5及更高版本,使用新的调用,另一种用于iOS4及更早版本,使用旧的调用。查看iOS 5中自定义导航栏的文档以了解更多信息。
您是否尝试删除所有自定义代码并使用本机导航栏?行为保持不变吗?通过这种方式,您可以检查您的自定义栏是否干扰了转换。