单击导航栏中的"后退"按钮时阻止动画?

Dir*_*nry 16 iphone back-button uinavigationcontroller

我的应用程序有一个导航控制器,我不想要任何动画:

  • 通过pushViewController:animated:方法,在推送视图时阻止动画很容易

  • 但是当我点击这个子视图中的"后退"按钮时,会有一个动画!KO!我该怎么做才能阻止这个动画?

Evg*_*pov 8

这可以防止默认动画。

- (void)viewWillDisappear:(BOOL)animated {
    [UIView setAnimationsEnabled: NO];
}

- (void)viewDidDisappear:(BOOL)animated {
    [UIView setAnimationsEnabled: YES];
}
Run Code Online (Sandbox Code Playgroud)

如果您需要自定义动画

- (void)viewWillDisappear:(BOOL)animated {
    [UIView setAnimationsEnabled: NO];

    CATransition *transition = [CATransition animation];
    transition.duration = 0.3;
    transition.type = kCATransitionFade;
    [self.navigationController.view.layer addAnimation:transition forKey:kCATransition];
}

- (void)viewDidDisappear:(BOOL)animated {
    [UIView setAnimationsEnabled: YES];
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*tin 3

有品类更优雅。这假设您的导航控制器对象已在您的应用程序委托中设置。只需将其放在根视图控制器中的 @implementaion 之前即可。

#import "AppDelegate.h"

@implementation UINavigationBar (custom)
- (UINavigationItem *)popNavigationItemAnimated:(BOOL)animated;
{

    AppDelegate *delegate = [[UIApplication sharedApplication] delegate];

    [delegate.navController popViewControllerAnimated:NO];

    return TRUE;
}


@end
Run Code Online (Sandbox Code Playgroud)