我似乎找不到一种方法来检测用户何时按下back
中的UINavigationController
按钮。我尝试过使用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:]
我会parentViewController
,然后是back
运行一些东西并刷新屏幕并弹出子视图控制器。在这个子视图控制器弹出后,前两个也运行。
我提到的最后一个根本不起作用。是否有正确的方法来检查是否按下了只为后退按钮运行的navigationController的{{1}}按钮,而不仅仅是在弹出视图控制器时?
答案 0 :(得分:0)
我会实现一个展开segue,What are Unwind segues for and how do you use them?
然后,您可以在父viewController上实现以下方法,该方法在用户按下" Done"
- (IBAction)unwindToParent:(UIStoryboardSegue *)unwindSegue
答案 1 :(得分:0)
我用不同的方法来实现这个目标。我的总体目标是取消设置已更改的核心数据项,但按下后退按钮。相反,我为编辑创建了一个新的上下文。如果按下了保存按钮,则新上下文将合并到主上下文中。如果按下后退按钮,新的上下文就会消失,改变也会消失。