我没有幸运地寻找这个,所以我们走了;)
我有UIViewController
个自定义UINavigationBar
,它将另一个UIViewController
推送为子视图。
除非我点击子视图上的后退按钮,否则一切正常。预览(第一个)视图正确显示,但不是动画。 UINavigationBar
的动画是正确的,只有视图会立即切换。
第一个- (void)viewWillAppear:(BOOL)animated
的函数UIViewController
将NO
调用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作为动画的值...
答案 0 :(得分:6)
我今天遇到了类似的问题UIViewController
在viewWillAppear
中获得了NO,除了标准UINavigationBar
和UINavigationController
。
原来是由于手动调用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)
您是否尝试删除所有自定义代码并使用原生导航栏?行为是否保持不变?通过这种方式,您可以检查自定义条是否与过渡混淆。