popViewController / viewWillAppear在iOS 5中没有动画

时间:2012-01-17 17:14:41

标签: iphone ios5 uinavigationbar viewwillappear popviewcontroller

我没有幸运地寻找这个,所以我们走了;)

我有UIViewController个自定义UINavigationBar,它将另一个UIViewController推送为子视图。

除非我点击子视图上的后退按钮,否则一切正常。预览(第一个)视图正确显示,但不是动画。 UINavigationBar的动画是正确的,只有视图会立即切换。

第一个- (void)viewWillAppear:(BOOL)animated的函数UIViewControllerNO调用animated。这只发生在我使用iOS 5进行测试时,而不是使用iOS 4进行测试。

有谁知道如何解决这个问题?

感谢您的帮助!汉纳斯

更新1

我刚刚删除了所有自定义代码,只使用了普通的UINavigationBar(所以没有额外的设置),它仍然不适用于iOS 5.这是我在第一个ViewController中用来推送第二个代码的代码的ViewController:

[self.navigationController pushViewController:secondViewController animated:YES];

正如我已经提到的 - 当我在第二个视图的导航栏中单击后退按钮时,第一个视图会立即显示而没有动画。

任何帮助将不胜感激!谢谢!

更新2

我觉得我越来越接近这个问题,但仍然没有解决方案:

我刚刚添加了自定义UINavigationController,我只需拨打[super popViewControllerAnimated:animated]。正确调用此get(动画为YES),但第一个viewWillAppear的{​​{1}}获取NO作为动画的值...

3 个答案:

答案 0 :(得分:6)

我今天遇到了类似的问题UIViewControllerviewWillAppear中获得了NO,除了标准UINavigationBarUINavigationController

原来是由于手动调用viewWillAppear:YES某个地方不应该这样做。 This item表示也可能是因为在某处调用了错误的super方法(例如[super viewWillAppear:animated]而不是[super viewDidAppear:animated]内的viewDidAppear)。

至于使用自定义UINavigationBar,我今天遇到了这个可能有助于您的案例的链接:http://sloshire1.posterous.com/simple-fix-for-viewwillappear-in-ios5

答案 1 :(得分:0)

Apple在iOS 5中实现了创建自定义导航栏的官方方法。不幸的是,它们还打破了iOS 4中大多数非官方的方式.iOS 5将不再为您调用drawRect。你需要有两种方法,一种用于iOS 5及更高版本,使用新的调用,一种用于iOS 4及更早版本,使用旧的调用。有关详细信息,请查看iOS 5中自定义导航栏的文档。

答案 2 :(得分:0)

您是否尝试删除所有自定义代码并使用原生导航栏?行为是否保持不变?通过这种方式,您可以检查自定义条是否与过渡混淆。