在UINavigationBar中添加左箭头返回按钮
UINavigationItem *item = [navBar.items objectAtIndex:0];
UINavigationItem *back = [[UINavigationItem alloc] initWithTitle:@"Back"];
NSArray *items = [[NSArray alloc] initWithObjects:back,item,nil];
[navBar setItems:items];
- (BOOL)navigationBar:(UINavigationBar *)navigationBar
shouldPopItem:(UINavigationItem *)item{
//在此处添加点击back按钮之后的操作代码
return FALSE;
}
Yes! There is a way of using the backBarButton with a custom action. No, it’s not by overriding the backBarButton property of navigationItem. This is not an ugly solution with images that simulate the “Back”-button (arrow-shaped.) It’s possible to use the backBarButton for popping the current viewController as normal, but than with other animations such as UIViewAnimationTransitionCurlDown.
Enough said, the solution is simple. You have to subclass your navigationController’s popViewControllerAnimated:(BOOL)animated. So create a custom navigationController:
customNavigationController.h
#import @interface customNavigationController : UINavigationController {} @end
And a custom “popViewControllerAnimated:(BOOL)animated”, this popViewControllerAnimated-function uses the “UIViewAnimationTransitionCurlDown” when popping from a SettingsTableView.
customNavigationController.m
#import "customNavigationController.h" #import "SettingsTableController.h" @implementation customNavigationController - (UIViewController *)popViewControllerAnimated:(BOOL)animated { if([[self.viewControllers lastObject] class] == [SettingsTableController class]){ [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration: 1.00]; [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view cache:NO]; UIViewController *viewController = [super popViewControllerAnimated:NO]; [UIView commitAnimations]; return viewController; } else { return [super popViewControllerAnimated:animated]; } } @end
Use your custom navigationController in your appDelegate:
customNavigationController *navigationController = [[customNavigationController alloc] initWithRootViewController:rootView];
14 Responses to “Custom action on Back Button UINavigationController”