在iPhone应用程序中返回导航

Nar*_*ddy 3 iphone xcode objective-c back-button uinavigationcontroller

当我按下iPhone应用程序中的后退按钮时,有什么方法可以捕获事件吗?现在我正在使用一个名为Back的图像按钮并为其定义动作.

我的客户端需要指向前一个屏幕的默认后退按钮,因此基于点击事件我应该能够指向特定屏幕,以便显示该屏幕的标题.

总之,我需要后退按钮来显示我需要的标题,是否可能?

提前致谢.

Dol*_*lbz 6

UINavigationBarDelegate如果处理– navigationBar:didPopItem:消息,可能是最接近检测按钮是否被按下的距离.

当按下后退按钮或代码弹出导航控制器堆栈本身的视图时,将调用此方法.如果您的代码是手动弹出视图,那么设置一个标志来指示代码何时启动弹出窗口应该是微不足道的,因此您可以确定何时触发后退按钮

在你的UINavigationBarDelegate实现中创建一个布尔属性,例如poppedInCode你在代码执行pop之前设置为true并实现委托,如:

- (void) navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationItem *)item
{
    if (!self.poppedInCode) {
        // back button was tapped
    }

    // set to false ready for the next pop
    self.poppedInCode = FALSE;
}
Run Code Online (Sandbox Code Playgroud)

这比当前接受的答案更有优势,因为它不需要对Apple的文档表明您不应该进行子类化的组件的子类化.它还保留了内置后退按钮的所有行为,而无需重写它.