2011-12-16 55 views
3

我有以下问题:我已经覆盖的UINavigationControllerpopViewControllerAnimated:(BOOL)animated,因为我想有一个自定义动画。代码如下:防止UINavigationBar的popViewController动画

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

不幸的是,UINavigationBar似乎忽略了我明确的禁止动画内置而且还在动画。

我有什么做的,还可以防止导航栏的动画?

回答

11

一些阅读,也有一些实验,我终于找到了需要做的事情,以达到所期望的行为是什么之后。

为了防止动画它不足以覆盖(UIViewController *)popViewControllerAnimated:(BOOL)animated导航栏。

还需要创建一个自定义导航栏和覆盖(UINavigationItem *)popNavigationItemAnimated:(BOOL)animated

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

当然这个自定义导航栏也必须是使用(我刚刚更换其使用的导航条中的一个我的导航控制器在界面生成器中)。

+3

任何理由,这种行为不也为pushNavigationItem工作:......? – horseshoe7 2014-01-22 15:59:42

0

如果任何人希望禁用推送动画 - 这对我的作品,通过对UINavigationBar的overrideing这种方法:

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