如果用户按下后退按钮,如何调用一些代码

Posted

技术标签:

【中文标题】如果用户按下后退按钮,如何调用一些代码【英文标题】:How to call some code if users press back button 【发布时间】:2013-05-13 02:09:41 【问题描述】:

UINavigationController?

例如,假设我想确保UINavigationController 在用户按下后退按钮时没有动画。

【问题讨论】:

【参考方案1】:

如果您不打算拦截后退按钮点击本身,而是当前视图控制器消失的行为,您可以使用:

- (void)viewWillDisappear:(BOOL)animated 
    if (self.isMovingFromParentViewController) 
        // handle back button press
    

如果您确定要执行返回按钮,您可以创建自己的自定义UIBarButtonItem 并将其设置为当前控制器的leftBarButtonItem。完成自己的逻辑后,请务必致电[self.navigationController popViewControllerAnimated:YES]

【讨论】:

一旦它出现在 viewWillDisappear 上,不像我可以取消该过程的权利。如果事情还没有完成,我想取消这个过程。 正确,此时无法取消。如果这是您的目标,我会添加一个自定义按钮来实现任何逻辑以在您准备好之前忽略触摸,或者只是禁用/删除系统提供的后退按钮(也许用取消按钮替换它?)。【参考方案2】:

在您的应用程序的 ViewDidLoad 中添加以下代码:

    UIButton *btnBack = [UIButton buttonWithType:UIButtonTypeCustom];
    [btnBack setFrame:CGRectMake(0.0f, 0.0f, 55.0f, 35.0f)];
    [btnBack addTarget:self action:@selector(backClicked:) forControlEvents:UIControlEventTouchUpInside];
    [btnBack setImage:[UIImage imageNamed:@"back.png"] forState:UIControlStateNormal];

    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:btnBack];

    self.navigationItem.leftBarButtonItem = backButton;

这将创建一个自定义后退按钮。 “Back.png”是与OS相同的图像。

添加以下代码作为函数。这个弹出到 RootViewcontroller。

- (void) backClicked:(id)sender 

// perform certain task
// If task is completed then call below LOC

[self.navigationController popToRootViewControllerAnimated:YES]; 

【讨论】:

以上是关于如果用户按下后退按钮,如何调用一些代码的主要内容,如果未能解决你的问题,请参考以下文章

使用 JavaScript 按下浏览器后退按钮时重定向到 URL

如何检查是否单击后退按钮

Android:按下后退按钮时提示用户保存更改

在父活动上按下后退按钮

连续按下按钮时如何加快前进/后退过程

用户按下后退按钮后检查互联网连接。(Android的警报框)