方案
我有一个带导航控制器的应用程序。当导航控制器将另一个控制器推入堆栈时,在屏幕的左上角显示后退按钮“<(最后一个视图控制器的标题)”。
我需要什么
我需要之类的东西(伪代码)......
-(void)detectedBackButtonWasPushed {
NSLog(@"Back Button Pressed");
//Do what I need done
}
问题
因为这个按钮是由导航控制器创建的,而我没有在故事板中创建这个按钮,如何将后退按钮“连接”到这样的方法?< /强>
我尝试过Oleg的例子
-(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"notification"];
if (viewController == vc) {
NSLog(@"BACK BUTTON PRESSED");
}
}
这是我应该怎么做的?因为这不起作用。
答案 0 :(得分:4)
使用viewWillDisappear
来检测此内容。
-(void) viewWillDisappear:(BOOL)animated
{
if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound)
{
[self backButtonPressed];
[self.navigationController popViewControllerAnimated:NO];
}
[super viewWillDisappear:animated];
}
-(void)backButtonPressed
{
NSLog(@"YEA");
}
答案 1 :(得分:0)
以前,我已经通过将navigationBar leftItem设置为一个带有自定义选择器的后退按钮来解决这个问题,该选择器将视图与其他任何需要做的事情一起解除。
我可能还建议查看后退按钮项并添加目标:触摸时调用的自我。