防止UINavigationBar popViewControlleranimation
我有以下问题:我已经覆盖popViewControllerAnimated:(BOOL)animated
的UINavigationController
因为我想有一个自定义的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; }