在UINavigationController
?
例如,假设我想确保当用户按下后退按钮时UINavigationController
没有动画。
答案 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]; }