エキスパートの MVC 設計に関するフィードバックをお願いします。
2 つのタブを持つ UITabBarController があり、各タブは VC のスタックを持つ Nav コントローラーにつながります。
最初のタブ パスの最後のビュー コントローラーに画像が表示されます。その画像をテーブルに保存し、2 番目のタブが選択されたときにいつでも表示できるようにしたいと考えています。
この画像を最初のタブ -> NaVController -> 最後の VC (画像 VC) から 2 番目のタブ -> NavController -> テーブル VC に送信するにはどうすればよいですか?
いくつかのオプションがあります。
1- tableVC でクラス メソッドを作成し、imageVC にそのクラス メソッドを呼び出してもらい、そのイメージをユーザー デフォルトに直接保存するように渡します。これはMVCに反するようです
2-メソッドとデリゲートプロパティを使用してimageVCでプロトコルを作成し、テーブルVCにそのメソッドを採用させて画像を配列に保存します。ここでの問題は、デリゲートを設定する唯一の場所が ViewDidLoad にあることです。
[[[[self.tabBarController.viewControllers objectAtIndex:0] viewControllers] objectAtIndex:1] setDelegate:self];
ここでの問題は、ユーザーが最初から 2 番目のタブを選択すると、最初のタブのナビゲーション スタックに viewControllers がロードされていないことが明らかであるため、アプリがクラッシュすることです。同じトークンで、ユーザーが最初に 1 つの画像を表示してから 2 番目のタブを選択すると、デリゲートが実行されて設定されますが、最初に選択された画像は保存されません。
もっと簡単な方法があるに違いない.....
よろしくお願いします KB