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

时间:2013-05-13 02:09:42

标签: ios objective-c uinavigationcontroller uinavigationitem

UINavigationController

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

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:0)

在您的应用程序的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]; }

enter image description here