为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HUX布斯 2019-07-16 14:38:38
在导航控制器中设置后退按钮的动作我试图覆盖导航控制器中Back按钮的默认操作。我在自定义按钮上提供了一个目标动作。奇怪的是,当分配它时,尽管是回退按钮属性,它没有注意到它们,它只是弹出当前的视图并返回到根:UIBarButtonItem *backButton = [[UIBarButtonItem alloc]                                    initWithTitle: @"Servers"                                    style:UIBarButtonItemStylePlain                                    target:self                                    action:@selector(home)];self.navigationItem.backBarButtonItem = backButton;一旦我让它通过leftBarButtonItem在navigationItem它调用我的动作,然而,这个按钮看起来像一个普通的圆形按钮,而不是一个箭后的按钮:self.navigationItem.leftBarButtonItem = backButton;在返回根视图之前,如何让它调用我的自定义操作?是否有一种覆盖默认回退操作的方法,还是在离开视图时总是被调用的方法(viewDidUnload不是这样的)?
查看完整描述

3 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

尝试将其放置到视图控制器中,在该控件中您要检测按程序:

-(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];}


查看完整回答
反对 回复 2019-07-16
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

我实现了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}

下载示例应用程序.


查看完整回答
反对 回复 2019-07-16
  • 3 回答
  • 0 关注
  • 667 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信