「ファイナライズ」部分とは正確には何ですか?さまざまなフィールドのビューコントローラーに状態を保存していて、次のビューに進む前にそれをデータベースファイルに書きたいと思いますか?
「ビューコントローラーの編集」に関しては、ナビゲーションコントローラーにプッシュする前に、プロパティを介して注入される単純なモデルオブジェクトにビューコントローラーが直接書き込むようにするのが良い方法だと思います。
次のようなものです:
/* Somewhere in the app delegate, like application:didFinishLaunching */
DatabaseFileModel *model = ...;
viewController1.model = model;
viewController2.model = model;
/* ... */
[self.window makeKeyAndVisible];
次に、各View Controllerは、テキストフィールドの編集などが終了したときにプロパティなどを設定して、このモデルに書き込みます。ビュー コントローラーがオブジェクトに直接書き込むということは、viewWillDisappear などを処理する必要がないことを意味します。
それでもこれを行う必要がある場合は、デリゲートをナビゲーション コントローラーに追加して、次の 2 つのメソッドを処理できます。
– navigationController:willShowViewController:animated:
– navigationController:didShowViewController:animated:
詳細については、UINavigationControllerDelegateのドキュメントを参照してください。
これにより、各ビュー コントローラーに分散するのではなく、ロジックを 1 か所に保持できます。