0

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つも実行されます。AFNetworkingonComplete[[NSNotificationCenter defaultCenter] postNotificationName:]parentViewController

私が言及した最後のものはまったく機能しません。backView Controllerがポップされたときだけでなく、戻るボタンに対してのみ実行されるnavigationControllerのボタンが押されたかどうかを確認する適切な方法はありますか?

4

2 に答える 2

0

アンワインド セグエを実装します。アンワインド セグエとは何ですか?どのように使用しますか?

次に、ユーザーが「完了」を押したときに呼び出される親viewControllerに以下のメソッドを実装できます

  - (IBAction)unwindToParent:(UIStoryboardSegue *)unwindSegue
于 2013-10-07T23:03:20.947 に答える
0

私は別のアプローチでこれを実現しました。私の全体的な目標は、変更されたコア データ項目の設定を解除することでしたが、[戻る] ボタンが押されました。代わりに、編集用の新しいコンテキストを作成しました。保存ボタンが押された場合、新しいコンテキストはメイン コンテキストにマージされます。戻るボタンが押された場合、新しいコンテキストは単純に消え、変更も消えます。

于 2014-01-17T16:29:47.727 に答える