Split View コントローラ ルートのタブ バー - 詳細ビューに接続するにはどうすればよいですか?
-
15-11-2019 - |
質問
初めての iPad プロジェクトに取り組んでいますが、何度も失敗を繰り返した結果、ルート/ポップオーバーの下部に 4 つのタブがあるタブ バーを備えた Split View コントローラーで構成される基本的なインターフェイスに満足しています。
4 つのタブのそれぞれに 4 つの異なる View Controller があります。これらのうち 3 つはテーブルが含まれており、4 つ目は私の設定スライダーとスイッチが含まれています。これらはすべて、ポートレートでもランドスケープでも問題なく機能します。
私が直面している課題は、これらのさまざまなタブから詳細ビューを操作する方法です。3 つのテーブルはすべて同じデータを参照し、ソート方法が異なるだけなので、必ずしも複数の詳細ビューが必要というわけではありません。したがって、それらはすべて同じ詳細ビューに接続できる可能性があります。
タブ バーがこのように使用されている例は他に見つかりませんでしたが、私のアプリにとっては完璧なソリューションのようです。
テーブルのセルを選択したときに、detailItem 情報が詳細ビューに表示されるように接続を確立するにはどうすればよいですか?IBのルートビューにタブバーが追加されました。代わりにプログラムで追加する必要がありますか?
これを機能させたサンプルプロジェクトを持っている人はいますか?
ありがとう!
解決
この「タブバー」部分にとらわれすぎないでください。より単純なアプリがどのように動作するかを考えてみましょう。RootViewController でセルを選択した場合、DetailViewController にどのように通知しますか?
自動的にはなりません。おそらく、RootViewController から DetailViewController への専用接続があり、次のような方法で RootViewController から DetailViewController 上のメソッドを呼び出すことになります。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
RootViewController のメソッド。実際、これはテンプレート UISplitView iPad アプリのセットアップ方法です。RootViewController から DetailViewController への IBOutlet 接続があります。
メモリを正しく管理している限り (保持、解放)、各 (ルート) ビュー コントローラー (タブ ビュー内) が単一の DetailViewController に接続していても問題はありません。タブ付きコントローラーが互いに干渉しないようにするには、ロジックを「中間者」クラスに集中化することができます。ViewControllerA が並べ替えた詳細を ViewControllerB が並べ替える直前に、何かをクリーンアップしたいかもしれません...
その部分はあなた次第です。RootViewController で選択されたセルに基づいて何かを表示するために DetailViewController が自動的に更新されるようなバックエンドの黒魔術は行われていないことに注意してください。