如果用户按下后退按钮,如何调用一些代码
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];
【讨论】:
以上是关于如果用户按下后退按钮,如何调用一些代码的主要内容,如果未能解决你的问题,请参考以下文章