防止UINavigationBar popViewControlleranimation

我有以下问题:我已经覆盖popViewControllerAnimated:(BOOL)animatedUINavigationController因为我想有一个自定义的animation。 代码如下:

 - (UIViewController *)popViewControllerAnimated:(BOOL)animated { UIViewController *poppedCtrl = [super popViewControllerAnimated:NO]; [((customViewController *) self.topViewController) doCustomAnimation]; return poppedCtrl; } 

不幸的是, UINavigationBar似乎忽略了我明确禁用内置的animation,它仍然是animation。

我还需要做些什么来防止导航栏的animation呢?

经过一些阅读和一些实验后,我终于find了需要做什么来达到理想的行为。

为了防止导航栏被animation,重写(UIViewController *)popViewControllerAnimated:(BOOL)animated是不够的。

还有必要创build一个自定义导航栏并覆盖(UINavigationItem *)popNavigationItemAnimated:(BOOL)animated

 - (UINavigationItem *)popNavigationItemAnimated:(BOOL)animated { return [super popNavigationItemAnimated:NO]; } 

当然,这个自定义的导航栏也必须是使用的那个(我刚刚取代了导航栏,我的导航控制器在界面生成器中使用)。

如果任何人想要禁用推animation – 这对我来说,通过重写UINavigationBar上的这个方法:

 - (void)pushNavigationItem:(UINavigationItem *)item { NSMutableArray* items = [[self items] mutableCopy]; [items addObject:item]; self.items = items; }