popViewController/viewWillAppear在iOS 5中未设置动画



我没有幸运地搜索到这个,所以我们开始吧;)

我有一个带有自定义UINavigationBarUIViewController,它推送另一个UIViewController作为子视图。

除了单击子视图上的后退按钮外,一切都很好。预览(第一个)视图显示正确,但未设置动画。UINavigationBar的动画是正确的,只有视图会立即切换。

第一个UIViewController的函数- (void)viewWillAppear:(BOOL)animatedNO来调用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),但第一个UIViewControllerviewWillAppear的值为NO作为animatized。。。

我今天遇到了类似的问题,除了标准的UINavigationBarUINavigationController外,UIViewControllerviewWillAppear中得到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中自定义导航栏的文档以了解更多信息。

您是否尝试删除所有自定义代码并使用本机导航栏?行为保持不变吗?通过这种方式,您可以检查您的自定义栏是否干扰了转换。

最新更新