猿问

在导航控制器中设置后退按钮的动作

在导航控制器中设置后退按钮的动作

我试图覆盖导航控制器中Back按钮的默认操作。我在自定义按钮上提供了一个目标动作。奇怪的是,当分配它时,尽管是回退按钮属性,它没有注意到它们,它只是弹出当前的视图并返回到根:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] 
                                  initWithTitle: @"Servers" 
                                  style:UIBarButtonItemStylePlain 
                                  target:self 
                                  action:@selector(home)];self.navigationItem.backBarButtonItem = backButton;

一旦我让它通过leftBarButtonItemnavigationItem它调用我的动作,然而,这个按钮看起来像一个普通的圆形按钮,而不是一个箭后的按钮:

self.navigationItem.leftBarButtonItem = backButton;

在返回根视图之前,如何让它调用我的自定义操作?是否有一种覆盖默认回退操作的方法,还是在离开视图时总是被调用的方法(viewDidUnload不是这样的)?


HUX布斯
浏览 668回答 3
3回答

aluckdog

尝试将其放置到视图控制器中,在该控件中您要检测按程序:-(void) viewWillDisappear:(BOOL)animated {     if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) {        // back button was pressed.  We know this is true because self is no longer        // in the navigation stack.       }     [super viewWillDisappear:animated];}

繁花不似锦

我实现了UIViewController-BackButtonHandler分机。它不需要对任何东西进行子类,只需将其放入您的项目中并覆盖。navigationShouldPopOnBackButton方法UIViewController班级:-(BOOL) navigationShouldPopOnBackButton {     if(needsShowConfirmation) {         // Show confirmation alert         // ...         return NO; // Ignore 'Back' button this time     }     return YES; // Process 'Back' button click and Pop view controler}下载示例应用程序.
随时随地看视频慕课网APP
我要回答