只要把这两个方法作为UINavigationController的Category方法调用就可以了 // UINavigationController+UINavigationController.h // xxx // // Created by yangping fang on 11-10-14. // Copyright (c) 2011年 EmatChina. All rights reserved. // #import <UIKit/UIKit.h> @interface UINavigationController (UINavigationController){ } - (void)pushAnimationDidStop; - (void)pushViewController: (UIViewController*)controller animatedWithTransition: (UIViewAnimationTransition)transition; - (UIViewController*)popViewControllerAnimatedWithTransition:(UIViewAnimationTransition)transition; @end
// // UINavigationController+UINavigationController.m // xxx // // Created by yangping fang on 11-10-14. // Copyright (c) 2011年 EmatChina. All rights reserved. // #import "UINavigationController+UINavigationController.h" @implementation UINavigationController (UINavigationController) - (void)pushAnimationDidStop{ } - (void)pushViewController: (UIViewController*)controller animatedWithTransition: (UIViewAnimationTransition)transition { [self pushViewController:controller animated:NO]; [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.5]; [UIView setAnimationDelegate:self]; [UIView setAnimationDidStopSelector:@selector(pushAnimationDidStop)]; [UIView setAnimationTransition:transition forView:self.view cache:YES]; [UIView commitAnimations]; } - (UIViewController*)popViewControllerAnimatedWithTransition:(UIViewAnimationTransition)transition { UIViewController* poppedController = [self popViewControllerAnimated:NO]; [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.5]; [UIView setAnimationDelegate:self]; [UIView setAnimationDidStopSelector:@selector(pushAnimationDidStop)]; [UIView setAnimationTransition:transition forView:self.view cache:NO]; [UIView commitAnimations]; return poppedController; } @end