0

iPad 上の iBooks と同様に、テキスト リストと写真リストの 2 つの異なるビューを持つ項目のリストを実装する必要があります。

iBooks ビュー タイプ セレクター

ただし、映画、音楽、ゲーム、書籍の 4 つの異なるカテゴリのアイテムがあり、それぞれに異なる特性があり、表示するために異なる情報が必要です。タブバーは既に使用されているため、ユーザーはタブバーではなくドロップダウンメニューを使用してカテゴリを変更します (これはアプリのライブラリセクションになります)。

私の意図は、アイテムのテキスト リストにはテーブル ビューを使用し、写真リストにはコレクション ビューを使用することです。各アイテム カテゴリについて、テーブル ビューとコレクション ビューの両方のデータ ソースが同じである可能性があります。これは、コレクション ビューの方が表示される情報が少ないためです。

私の質問は、どのパターンを使用するかです。ができた:

  • A. 4 つのテーブル ビュー コントローラー + 4 つのコレクション ビュー コントローラー
  • B. 1 つのテーブル ビュー コントローラー + 1 つのコレクション ビュー コントローラー (それぞれ 1 つのテーブル ビューと 1 つのコレクション ビューを管理し、4 種類のテーブル ビュー セル、4 種類のコレクション ビュー セルを含む)。
  • C. 1 つのテーブル ビュー コントローラー + 1 つのコレクション ビュー コントローラー (それぞれ 4 つのテーブル ビューと 4 つのコレクション ビューを管理する)
  • D. 4 つのビュー コントローラー (それぞれが 1 つのテーブルと 1 つのコレクション ビューを管理し、データ ソースを共有します)
  • E. 1 つのビュー コントローラー (すべてを管理する、1 つのテーブル ビューと 1 つのコレクション ビュー、4 つの異なるテーブル ビュー セル、4 つの異なるコレクション ビュー セル)。

私は、ソリューション A と D がコードの点で最もクリーンであり、B が最も実装が簡単であると考えています。

4

2 に答える 2

0

B をメイン コントローラーとして使用するハイブリッド アプローチをお勧めしますが、セルの種類ごとにコントローラーを使用し、選択したカテゴリに基づいてこのコントローラーを設定します。

UPDATE : この件についてさらに考え直した後、オプション D を使用します。データ ソースとして機能し、テーブル ビューとコレクション ビューのデリゲートとして機能する各カテゴリに 1 つのビュー コントローラー。

于 2013-04-05T11:43:47.307 に答える
0

私は B を使用し、新しいコンテンツを追加するときにそれらにあまり触れないようにします。

コレクション ビューの場合、

  • 外観は NIB を使用してカスタマイズできますapplyLayoutAttributes:。また、コンテンツ タイプごとにカスタム レイアウトを使用することもできます (異なるアニメーションが必要な場合)。
  • アクションは次のように実装できます: ジェスチャ レコグナイザを長押しし、 and を使用して最後に押されたビューを取得しlocationInView:indexPathForItemAtPoint:をポップUIMenuItemし、ビューにアクションを適用します (1 つの方法)。

コンテンツ タイプごとに、アクションとその実装を別のクラスに配置します。命名規則「コンテンツクラス名 + アクション」を使用してそのようなクラスを探すか、コントローラーでファクトリーパターンを使用してそれを取得できます。次に、必要なサービスを注入し、アクションと、アクションを開始したビューに関連するモデル クラスを渡します。この部分はテーブルでも機能します。

于 2013-04-05T20:20:47.803 に答える