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];
}
最初の2つはうまく機能しますが、押すと呼び出しDone
を実行してから、いくつかのことを実行して画面を更新し、子ビューコントローラーをポップします。この子View Controllerがポップすると、最初の2つも実行されます。AFNetworking
onComplete
[[NSNotificationCenter defaultCenter] postNotificationName:]
parentViewController
私が言及した最後のものはまったく機能しません。back
View Controllerがポップされたときだけでなく、戻るボタンに対してのみ実行されるnavigationControllerのボタンが押されたかどうかを確認する適切な方法はありますか?