防止UINavigationBar popViewController动画

zla*_*ajo 3 uinavigationbar uinavigationcontroller ios

我有以下问题:我已经覆盖popViewControllerAnimated:(BOOL)animatedUINavigationController因为我想要一个自定义动画.代码如下:

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

不幸的是,UINavigationBar似乎忽略了我明确禁用内置动画并且它仍然是动画的.

我还需要做些什么才能阻止导航栏的动画?

zla*_*ajo 11

经过一些阅读和一些实验,我终于找到了实现所需行为需要做的事情.

要防止导航栏被动画,仅覆盖是不够的(UIViewController *)popViewControllerAnimated:(BOOL)animated.

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

- (UINavigationItem *)popNavigationItemAnimated:(BOOL)animated {
    return [super popNavigationItemAnimated:NO];
}
Run Code Online (Sandbox Code Playgroud)

当然,这个自定义导航栏也必须是使用的导航栏(我刚刚更换了导航控制器在界面构建器中使用的导航栏).

  • 为什么这种行为不适用于pushNavigationItem:...? (3认同)