5

我没有幸运找到这个,所以我们开始;)

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

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

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

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

谢谢你的帮助!汉内斯

更新 1

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

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

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

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

更新 2

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

UINavigationController我刚刚在我刚刚调用的地方添加了一个自定义[super popViewControllerAnimated:animated]。这个 get 被正确调用(动画是 YES),但第viewWillAppear一个get 的UIViewController值为 NO 作为动画的值......

4

3 回答 3

6

我今天遇到了类似的问题UIViewControllerviewWillAppear除了标准UINavigationBarUINavigationController.

原来是由于手动调用viewWillAppear:YES了不应该出现的地方。该项目表明它也可能是由于在super某处调用了错误的方法(例如[super viewWillAppear:animated],而不是[super viewDidAppear:animated]inside of viewDidAppear)引起的。

至于使用自定义UINavigationBar,我今天遇到了这个链接,这可能会对你的情况有所帮助: http: //sloshire1.posterous.com/simple-fix-for-viewwillappear-in-ios5

于 2012-01-20T20:46:00.770 回答
0

Apple 在 iOS 5 中实现了创建自定义导航栏的官方方法。不幸的是,它们也破坏了 iOS 4 中大多数非官方的方法。iOS 5 将不再为您调用 drawRect。您需要有两种方法,一种适用于 iOS 5 及更高版本,使用新调用,另一种适用于 iOS 4 及更早版本,使用旧调用。查看 iOS 5 中自定义导航栏的文档以获取更多信息。

于 2012-01-17T20:34:02.683 回答
0

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

于 2012-01-20T09:12:05.117 回答