如何确定在UINavigationBar中是否点击了后退按钮?

时间:2010-10-10 12:44:11

标签: iphone objective-c cocoa-touch uikit

首先,我尝试使用viewWillDisapper-method来管理它,但这对我来说还不够详细。他们是另一种解决方案吗?

还尝试了代表:

- (void)navigationBar:(UINavigationBar *)navigationBar didPushItem:(UINavigationItem *)item

但没有任何反应。

3 个答案:

答案 0 :(得分:2)

您需要更改viewDidLoad中的默认后退按钮:

- (void) viewDidLoad
{
   self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back"
                                           style:UIBarButtonItemStyleBordered
                                           target:self
                                           action:@selector(handleBack:)] autorelease];
}

当然,您必须在方法中弹出控制器:

- (void) handleBack:(id)sender
{
    // ... your code !

    [self.navigationController popViewControllerAnimated:YES];
}

答案 1 :(得分:2)

您应该尝试其他UINavigationBarDelegate委托方法–navigationBar:shouldPopItem:,并在完成您需要做的任何事情后返回YES。 “应该”在事件发生之前调用委托方法。 “有”方法在发生后被调用。

您正在呼叫的方法不适用于后退按钮。后退按钮将“弹出”视图控制器。相反(您正在使用)是“推”视图控制器。推送将新的视图控制器添加到堆栈。弹出窗口从堆栈中删除视图控制器。

另外,请确保符合UINavigationBarDelegate。如果您使用的委托方法没有发生任何事情,则设置错误。如果您使用的是UINavigationController,则应自动设置AFAIK代理。

答案 2 :(得分:0)

“还尝试了代表:......但没有任何反应。” 首先要做的是在您怀疑未调用的函数内部设置断点。要设置断点,只需单击xcode中代码的左侧。