首先,我尝试使用viewWillDisapper-method来管理它,但这对我来说还不够详细。他们是另一种解决方案吗?
还尝试了代表:
- (void)navigationBar:(UINavigationBar *)navigationBar didPushItem:(UINavigationItem *)item
但没有任何反应。
答案 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中代码的左侧。