我需要检测用户何时点击导航栏上的"back“按钮,以便在发生这种情况时执行一些操作。我正在尝试手动为这样的按钮设置一个操作,这样:
[self.navigationItem.backBarButtonItem setAction:@selector(performBackNavigation:)];
- (void)performBackNavigation:(id)sender
{
// Do operations
[self.navigationController popViewControllerAnimated:NO];
}
我首先将该代码放在视图控制器本身中,但我发现self.navigationItem.backBarButtonItem
似乎是nil
,所以我将相同的代码移到了父视图控制器中,这会将前者推入导航堆栈。但我都不能让它工作。我读过一些关于这个问题的帖子,其中一些说选择器需要在父视图控制器上设置,但对我来说它无论如何都不起作用……我能做错什么呢?
谢谢
发布于 2014-12-16 20:59:38
斯威夫特
override func didMoveToParentViewController(parent: UIViewController?) {
if parent == nil {
//"Back pressed"
}
}
发布于 2015-07-15 00:54:39
这是dadachi's答案的Objective-C版本:
Objective-C
- (void)didMoveToParentViewController:(UIViewController *)parent{
if (parent == NULL) {
NSLog(@"Back Pressed");
}
}
发布于 2014-07-24 14:28:37
设置UINavigationBar的委托,然后使用:
- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item {
//handle the action here
}
https://stackoverflow.com/questions/18824186
复制相似问题