2

UIViewControllerサブクラスのスタックがあります。それぞれがNSManagedObjectモデルを変更します。それらの多くは、独自のモーダル ビュー コントローラーも提供します。

NSManagedObjectContextユーザーがView Controllerを「ポップ」するか、次のView Controllerをプッシュするときに、変更を保存する必要があります。

現在、デフォルトの戻るボタンを非表示にUIBarButtonItemして、targetofselfと customを使用して独自のボタンを設定していますaction

これで問題なく動作しますが、理想的には、デフォルトの [戻る] ボタンを使用して、ポップの前にコードを実行したいと考えています。ポップの前に自分のコードを実行する方法はありますか?

viewWillDisappear(ディスクへの永続化にはコストがかかる可能性があり、このメソッドはView Controllerによって表示されるモーダルによってもトリガーされる可能性があるため、コードを入れたくないのです。)できますか?

4

5 に答える 5

4

1) の最後の2 番目の要素(次の VC がプッシュされた場合) または 2) ( VCがポップされたばかり)viewDidDisappearであることを確認した後、 でそれを行うことができます。selfself.navigationController.viewControllersself.navigationControllernilself

于 2012-12-21T08:23:06.920 に答える
1

はい..ナビゲーションコントローラーには、ビューコントローラーがいつポップまたはプッシュされたかを示すデリゲートがあります..それを使用してタスクを実行できます...

于 2012-12-21T08:23:33.817 に答える
0

viewWillDissappear を使用して、変更を永続化します。必要に応じて、viewWillAppear を使用して、他のプッシュされたビュー コントローラーが作業を行っている間に発生した可能性のある変更を認識します (データをリロードします)。

于 2012-12-21T08:54:23.177 に答える
0

コードに次のメソッドを追加します。

- (void) viewWillDisappear:(BOOL)animated{
     //your code here
}
于 2012-12-21T08:31:21.493 に答える