你有几种不同的讨厌的方式,你可以做到这一点。事实上,您嵌入在UITAbBar控制器中实际上会使这种情况显着复杂化,因为无法区分是由于控制器被推送还是来自标签交换而调用viewDidAppear:,这意味着您可能需要将数据存储在某处以便知道什么导致过渡以及是否需要隐藏栏。
假设你搞定,一个选项是改变navigationBarHidden你有动画后,在出来的路上有来处理,因为你想要的动画吧发生后,弹出动画没有好地方。最快的解决方案是隐藏酒吧然后手动运行你的runloop约0.5秒,直到它动画出来,然后继续。它的毛病,但它很快,它的工作原理。
- (void)viewWillDisappear:(BOOL)animated {
if (animated) {
[self.navigationController.navigationBar setHidden:YES animated:YES];
}
//GROSS
NSDate *endDate = [NSDate dateWithTimeIntervalSinceNow:0.5];
while([[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:endDate]);
}
如果你想干净地做,我建议从零开始重新实现UINavigationController。
答案并不完全是我所追求的,但足够公平。 – tcurdt 2009-09-02 22:12:18