UICollectionView
はiOS6で導入されたUITableView
のアップグレードバージョンに似ていますが、いつUICollectionView
ではなくUITableView
を選択すべきですか?
UITableView
を使用するアプリがまだあります。UICollectionView
が何でもできるUITableView
ができるのに、なぜUITableView
を使用するのですか?パフォーマンスに関しては違いはありますか?
ありがとう!
それは要件に依存します。アプリケーションの流れによって、アプリケーションに統合するUIのタイプが決まります。
人々は主にUICollectionview
を使用して、グリッドに表示される複数の画像でUIのタイプを作成します。これにはUITableView
を使用した複雑なロジックが含まれますが、UICollectionview
を使用すると簡単になります。
UICollectionview
を使用する場合、選択したアイテムの値を取得することにより、タグなどのボタンを設定する必要はありません。単に-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
とUITableViewDelegate
で取得できます:
`-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath`
アイテムの代わりに選択した行を取得するため、グリッドまたは変更されたアイテムを作成するには、UICollectionview
を使用するのが最適です。
各アイテムのリスト詳細には、各アイテムの詳細情報が表示されるため、UITableView
を使用します。
Apple Docs:
UICollectionViewクラスは、データ項目の順序付けられたコレクションを管理し、カスタマイズ可能なレイアウトを使用してそれらを提示します。コレクションビューは、1列のレイアウト以上のものをサポートできることを除いて、テーブルビューと同じ一般的な機能を提供します。コレクションビューは、複数列グリッド、タイルレイアウト、円形レイアウトなどの実装に使用できるカスタマイズ可能なレイアウトをサポートしています。必要に応じて、コレクションビューのレイアウトを動的に変更することもできます。
テーブルビューでは、単一の列にアイテムのリストが表示されます。 UITableViewはUIScrollViewのサブクラスであり、ユーザーはテーブルをスクロールできますが、UITableViewは垂直スクロールのみを許可します。テーブルの個々のアイテムを構成するセルはUITableViewCellオブジェクトです。 UITableViewはこれらのオブジェクトを使用して、テーブルの表示可能な行を描画します。セルにはコンテンツ(タイトルと画像)があり、右端付近にアクセサリビューを含めることができます。標準アクセサリビューは、開示インジケータまたは詳細開示ボタンです。前者はデータ階層の次のレベルにつながり、後者は選択されたアイテムの詳細ビューにつながります。アクセサリビューは、スイッチやスライダーなどのフレームワークコントロールにすることも、カスタムビューにすることもできます。テーブルビューは、ユーザーがテーブルの行を挿入、削除、および並べ替えることができる編集モードに入ることができます。
私の基準は次のとおりです。
UITableViewでできる場合は、それを使用します
UITableViewを実行するために多くのコードが必要な場合、またはまったく実行できない場合は、UICollectionViewを使用します。
決定する前に、UITableViewの制限を考慮する必要があります。これは単一の列です。また、セルのみをカスタマイズできますが、セクションの背景などはカスタマイズできません。したがって、余分なフリルのない物事のまっすぐなリストを持っている場合-それは沼地の標準的なiOSビューのように見えますが、基本的には-UITableviewを使用します。カスタムインセット、または各セクションの周囲に境界線がある場合は、UICollectionViewを使用します。
ビューをテーブルビューとして開発し始めると、後でそれが必要な1つのことを実行できないことがわかります。最初の手の経験;)
2つをさらに経験した後、編集します。最後の段落を無視します。 UICollectionViewをUITableViewのように機能させるには、多くの定型コードが必要です。 UICollectionViewは、本当に必要な場合にのみ使用してください。 ;)
単純なリストと前方/後方ナビゲーションには、UITableView
を使用します。
高度なカスタマイズが必要な場合は、UICollectionView
を使用してください。
一般的に、ソフトウェア開発では、「最も単純なもの」を表すアプローチを選択するのが最善です。
私の視点によると、collectionViewとtableViewの主な違いは
TABLEVIEW-> 1つの列にのみアイテムのリストを表示します。
COLLECTION-VIEW->複数の列にあるアイテムのリストを表示します。
それがあなたを助けることを願っています。
IPhone用UITableViewを選択する場合は、まずiPad戦略を検討したことを確認してください。 iPad固有のレイアウトが必要な場合は、その単一列レイアウトをグリッドにすることができます。
必須ではありませんが、私は常にコレクションビューを使用します。そうすれば、コレクションの表示方法をさまざまな解像度に簡単に適合させることができます。プラスは、将来のリファクタリング時に新しい種類のセルをすばやく追加する準備ができていることです。
テーブルビューのポイントが表示されません。コレクションビューを使用してテーブルを表すのは非常に簡単です。 IMO。
データの表示方法に完全に依存します。上記の多くで述べたように、単一のデータセットのみが必要で、複雑すぎない場合は、UITableView
を選択します。それ以外の場合はUICollectionView
を使用します。
UICollectionView
はカスタマイズに適しています。
複数のセルの高さなどを扱っている場合は、UICollectionView
に進みます。
私の個人的な経験から、2つの要素は疎にしか比較すべきではありません。
TableView
TableViewは、リスト形式でデータを表示するために設計されたUI要素です。次のような、UITableViewに標準として付属する特定の機能があります。
上記の要素により、リスト形式で表示および対話する際のデータの使いやすさが向上します。メールの閲覧など。
CollectionView
CollectionViewは、カスタムレイアウト(通常はリストではないもの)を使用してコンテンツを表示するために設計されたUI要素です。 CollectionViewsは、完全に特注のレイアウトスタイルでデータを表示する機能を改善し、動的にレイアウトを動的に変更します。以下に例を示します。
CollectionViewsでは、複数の選択も可能です。
結論
上記からわかるように、どちらも完全に異なるユースケースを持ち、独自の特定のデータセットの開発と使いやすさを強化するように設計されています。
以下のインタラクションでリストスタイルで何かを表示する場合:-追加-削除-再順序付け.
それ以外の場合は、CollectionViewの利点を活用して柔軟性を高める必要があります。
どちらも要件に依存します。テーブルビューは、さまざまな編集シナリオもサポートしています。このサポートは、コレクションビュークラスには実装されていません。これらのメソッドに依存するテーブルビューから変換する場合は、コレクションビューで少し余分な負担をかけることを期待してください。コレクションビューのセクションヘッダーは、ビュー内のどこにでも配置できます。 UITableViewは、選択されたアイテムの値を取得することで、タグなどのボタンを設定する必要がありません。
実際には、UITableViewのみが必要なときに、誰もが私が出会ったUICollectionViewを使用します。 「1次元です。上下します。なぜレイアウトとデータに不要なデリゲートメソッドを追加するのですか?」 AnimationsマニュアルもHIGもUICollectionViewガイドも読んでいない所有者が、それを使用して可変の高さとアニメーションを追加することを決めたため、スタートアップにUICollectionViewCellがつぶれた理由を見つけるのに2時間余分に費やしました。言うまでもなく、余計なレイアウトデリゲート+ペン先がないため、単純にテーブルセルを使用することで回避できた、ビジネスクリティカルではない問題について頭痛を覚え、時間を大幅に失いました。
あなたのデータとディスプレイがそれを必要とするとき、私はこれをまっすぐにさせてください、私はUICollectionViewのものです。彼らは非常に強力です。しかし実際には、私が見たほとんどの人はリストでそれらを使用しています。
これは別の欠陥をもたらします。また、変更されることのない短い定数リストでも使用されます。この場合、Xibを作成します。または、それらを積み重ねるカスタムビューを記述します。どうして?ボタンまたはスイッチを備えた5セットのラベルのメモリ管理が不要だからです。変更される可能性がある場合は、はい、リストを使用します。物理学が必要な場合、UICollectionViewはいくつかのクールな効果でうまく機能します。しかし、5つのデリゲートメソッドと、移動しない5つのラベルのレイアウトシステムを本当に追加する必要がありますか?
また、iOSにもネイティブのスタッキングビューがあることを忘れていません。 2Dとアニメーションシステムに熟達しているにもかかわらず、私が望むように変形させることは決してできないので、組み込みのシステムを使用することはありません。
私が言っているのは、要件を定義することだけです。 UIがアイテムを追加/削除し、それ自体を更新していない場合は、これらのいずれも必要ないかもしれません。または、カードゲームを作成してテーブル上に仮想的に配置し、UICollectionViewをレイアウトシステムの物理システムとともに使用することもできます。
私は現在のプロジェクトでこの問題を抱えていました。使用するもの。私の場合、それは本当に簡単でした。私は両方が必要でした。 UITableViewのように見えるビューと、その変更/レイアウトを変更するビューが必要でした。そのため、UICollectionViewが使用されました。また、追加のカスタマイズを必要としないすべての場所でUITableViewを使用しています。 UiTableViewには、画像とテキストを含むデフォルトのレイアウトが付属しているため、簡単にするために使用しています。
要件に基づいて、UITableViewまたはUICollectionビューを選択します。
グリッドタイプで画像またはアイテムを表示する場合、またはよりカスタマイズ性が必要な場合は、UICollectionviewを使用します。
各項目を詳細と副詳細とともにリストするには、UITableViewを使用します。
ICollectionView: UICollectionViewクラスは、データ項目の順序付けられたコレクションを管理し、カスタマイズ可能なレイアウトを使用してそれらを表示します。コレクションビューは、1列のレイアウト以上のものをサポートできることを除いて、テーブルビューと同じ一般的な機能を提供します。
ITableView:テーブルビューでは、単一の列にアイテムのリストが表示されます。 UITableViewはUIScrollViewのサブクラスであり、ユーザーはテーブルをスクロールできますが、UITableViewは垂直スクロールのみを許可します。
ニーズに基づいて、TableViewまたはCollectionViewを選択しています。
例:
電話の連絡先には、tableViewが最適なオプションです。
フォトギャラリーの場合、コレクションビューが最適なオプションになります。