5

动画我不幸运,寻找这一点,所以在这里我们去)popViewController/viewWillAppear中没有的iOS 5

我有一个UIViewController使用自定义UINavigationBar其推动另一UIViewController作为子视图。

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

第一个UIViewController的功能- (void)viewWillAppear:(BOOL)animatedNO调用为animated。这只发生在我用iOS 5测试时,而不是用iOS 4.

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

感谢您的帮助!汉纳斯

更新1

我只是删除所有的自定义代码,只是使用普通UINavigationBar(所以没有额外的设置),它仍然无法与iOS 5的工作这是我的代码中使用第一视图控制器推第二的ViewController:

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

正如我已经提到的 - 当我点击第一个视图立即出现无动画第二视图导航栏中的后退按钮。

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

更新2

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

我只是增加了一个自定义的UINavigationController,我只是叫[super popViewControllerAnimated:animated]。这个get的被正确调用(动画是YES),但第一个UIViewControllerviewWillAppear获得NO作为动画的值...

回答

6

我今天有一个类似的问题,其中UIViewControllerviewWillAppear中获得了否,除了使用标准UINavigationBarUINavigationController

原来,这是由于手动呼叫viewWillAppear:YES本应该不应该的地方。 This item暗示它也可能是由于在某处(例如,在某个地方调用错误的super方法)造成的。[super viewWillAppear:animated]而不是[super viewDidAppear:animated]内部的viewDidAppear)。

对于使用自定义UINavigationBar,我碰到这个链接今天,可以帮助你的情况下跑:http://sloshire1.posterous.com/simple-fix-for-viewwillappear-in-ios5

+2

哦,天啊,谢谢sooomuch!我正在与这个疯了!我刚刚发现在我的自定义“UITabBarController”的'viewDidAppear'中有'[super viewWillAppear]'。再次感谢! – Hannes 2012-01-20 22:16:41

+0

@Hannes感谢它对我有用@Hannes是否使用了'Rumex CustomTabbar(RXCustom Tabbar)'我只隐藏了我的自定义UITabBarController的viewDidAppear中的[super viewWillAppear]。这是否会造成任何问题?这是什么问题? – 2012-07-17 10:42:16

+0

@Hannes我正在打开'现在的模态viewcontroller'在那个时候我越来越同样的问题。你有什么主意吗? – 2012-07-17 10:45:50

0

Apple实施了官方方式在iOS 5中创建自定义导航条。不幸的是,它们也打破了大部分在iOS 4中使用非官方方式。iOS 5不会再为您调用drawRect。你需要有两种方式来完成这个任务,一个用于iOS 5或更高版本,使用新的调用,另一个用于iOS 4和更早的版本,使用旧的调用。查看iOS 5自定义导航栏的文档以获取更多信息。

+0

嗨欧文,感谢对进入这个。我将UINavigationBar分类并将其链接到.xib文件中以获得自定义标头 - 它适用于iOS 4和5.尽管如此,我只是删除了自定义的“UINavigationBar”,只是常规的标签栏,效果仍然相同,视图动画在显示子视图时正确,但在单击后退按钮时立即切换。 – Hannes 2012-01-17 22:36:51

0

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

+0

谢谢,我只是这样做,但仍然第一个视图出现没有动画...我更新了我的问题。 – Hannes 2012-01-20 09:13:05