テーブルビューに表示される2つのタイプのアイテム(タイプaとタイプbと呼ぶことができます)を含む配列を持っています。タブバーを使用すると、それぞれのタブに異なるビューが関連付けられます
テーブルビューは、タイプaのアイテムだけが表示されるか、タイプbのアイテムだけが表示されるか、またはすべてのアイテムが表示され、対応する3つのタブのいずれかを押すことによって適用されるフィルタリングを制御できます。
これは、私のアプリのルートコントローラがタブバーコントローラでなければならないことを示しています。
それが唯一の要件であれば、私はタブバーコントローラになるだろう3つのテーブルビューコントローラを持っている、しかし、私はきれいな方法でそれを設計する方法がわからない別の要件があります:
あった場合空のテーブルビューの代わりに画像とテキストを表示する必要があります(画像とテキストはどのフィルタが選択されているかによって異なります)。だから、これはテーブルビューの背景画像を設定することで達成できたかもしれませんが、フィルタaが適用されている場合は画像/テキストに加えてボタンも表示されます - 私はテーブルビューのバックグラウンドとして設定することはできません。したがって、私は画像/テキスト/ボタンビューの表示を扱うために、別々のビューコントローラのセットが必要であることを暗示しています。
タブ・コントローラは、各フィルタに表示する項目があるかどうかによって、これらのビュー・コントローラをテーブル・ビュー・コントローラと動的に入れ替えることができますが、これは面倒です。
だから私はタブバーコントローラーが3つのナビゲーションコントローラーを所有している必要があり、各ナビゲーションコントローラーはアイテムがない場合はイメージ/テキスト/ボタンを表示するコントローラーをルートビューコントローラーとして持っていると思っていました。テーブルビューコントローラをスタックに追加します(項目数が0になるとポップする)。
これは有効なオプションですか?記述された振る舞いの標準的なパターンはありますか?
TIA
ありがとう、私はUITableViewControllerからUIViewControllerに変更するよう編集していますので、おそらくUITableViewを使用するよりも優れたアプローチだと思いますか? UITableViewControllerを使用してUIViewをコンテナビューとして作成し、その中に他のサブビュー(ImageView、UIButton、テーブルビュー)を配置できますか? UIViewControllerのサブクラスを作成することと比較した場合の短所/利点はありますか? – Gruntcakes
あなたの質問は私がそれを変更した理由です。 'tableView'をコントローラのコンテナビューにしたくない場合は、' UIViewController'を使い始めます。それ以外に、 'UITableViewController'で始まる主な理由は' dataSource/delegate'が設定された 'tableView'であらかじめ設定されているからです。それ以外の場合、利点はありません。私は通常、 'UIViewController'を使い、独自の' tableView'を追加するのが簡単です。 – XJones