Ios 当按下导航控制器后退按钮且未弹出时检测
我似乎找不到一种方法来检测用户何时按下Ios 当按下导航控制器后退按钮且未弹出时检测,ios,objective-c,uinavigationcontroller,Ios,Objective C,Uinavigationcontroller,我似乎找不到一种方法来检测用户何时按下UINavigationController中的back按钮。我已尝试使用UINavigationControllerDelegate - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 我试过了
UINavigationController
中的back
按钮。我已尝试使用UINavigationControllerDelegate
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
我试过了
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
if (self.isMovingFromParentViewController) {
NSLog(@"BACK BUTTON WAS PRESSED!!!!!!!!!");
[[[NSManagedObjectContext MR_defaultContext] undoManager] endUndoGrouping];
[[NSManagedObjectContext MR_defaultContext] undo];
}
}
我也试过了
- (void)viewDidLoad
{
self.navigationItem.backBarButtonItem.target = self;
self.navigationItem.backBarButtonItem.action = @selector(cancelPressed);
}
- (void)cancelPressed
{
NSLog(@"CANCEL BUTTON WAS PRESSED!!!!!!!!!");
[[[NSManagedObjectContext MR_defaultContext] undoManager] endUndoGrouping];
[[NSManagedObjectContext MR_defaultContext] undo];
}
但是,前两个功能很好,当我按下Done
时,我运行一个AFNetworking
调用,然后onComplete
完成该调用,我执行一个[[NSNotificationCenter defaultCenter]postNotificationName:]
,然后父视图控制器
运行一些操作,刷新屏幕并弹出子视图控制器。当这个子视图控制器弹出时,前2个也会运行
我提到的最后一个根本不起作用。是否有合适的方法来检查导航控制器的
后退
按钮是否被按下,该按钮将仅针对后退按钮运行,而不仅仅是在视图控制器弹出时运行?我将执行一个展开序列
然后,您可以在父视图控制器上实现以下方法,当用户按“完成”时,会调用该方法
我用了一种不同的方法。我的总体目标是取消设置已更改的核心数据项,这些数据项已更改,但随后按下了“后退”按钮。相反,我为编辑创建了一个新的上下文。如果按下保存按钮,新上下文将合并到主上下文中。如果按下“后退”按钮,新上下文将消失,更改也将消失。您可以使用自定义UIBarButtonim来完成此操作,但我不认为您所描述的是使用stock UINavigationController后退按钮是可能的。这仍然会导致
视图将消失
运行,而该视图仍将运行撤消管理器。
- (IBAction)unwindToParent:(UIStoryboardSegue *)unwindSegue