UITableViewではなくUICollectionViewを使用する場合


92

iOS6 UICollectionViewUITableView導入されたのアップグレードバージョンのようなものですが、UICollectionView代わりにUITableViewいつ選択する必要がありますか?

まだ使用しているアプリがありますがUITableViewUICollectionView何かUITableViewできることがあれば、なぜまだ使用しているのUITableViewですか?パフォーマンスに関する違いはありますか?

ありがとう!

回答:


75

それは要件によって異なります。アプリケーションのフローによって、アプリケーションに統合するUIのタイプが決まります。

人々は主UICollectionviewに、グリッドに表示された複数の画像でUIのタイプを作成するために使用します。これはを使用した複雑なロジックになりますUITableViewが、を使用UICollectionviewすると簡単です。

を使用する場合UICollectionview、選択された項目の値を取得することにより、タグなどのボタンを設定する必要はありません。あなたは、単に取得することができます-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPathし、中UITableViewDelegate

`-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath`

アイテムではなく選択された行を取得するため、グリッドまたは変更されたアイテムを作成するにUICollectionviewは、を使用するのが最適です。

各アイテムのリストの詳細については、各アイテムの詳細情報が表示されるUITableViewため、人々が使用しています。

Appleドキュメント:

UICollectionViewクラスリファレンス

UICollectionViewクラスは、データ項目の順序付けられたコレクションを管理し、カスタマイズ可能なレイアウトを使用してそれらを提示します。コレクションビューは、テーブルビューと同じ一般的な機能を提供しますが、コレクションビューは、単一列のレイアウト以外のものもサポートできます。コレクションビューは、複数列グリッド、タイルレイアウト、円形レイアウトなどの実装に使用できるカスタマイズ可能なレイアウトをサポートしています。必要に応じて、コレクションビューのレイアウトを動的に変更することもできます。

UITableViewクラスリファレンス

テーブルビューでは、項目のリストが1つの列に表示されます。UITableViewは垂直スクロールのみを許可しますが、UITableViewはUIScrollViewのサブクラスであり、ユーザーはテーブルをスクロールできます。テーブルの個々の項目を構成するセルは、UITableViewCellオブジェクトです。UITableViewはこれらのオブジェクトを使用して、テーブルの表示可能な行を描画します。セルにはコンテンツ(タイトルと画像)があり、右端近くにアクセサリビューを表示できます。標準アクセサリビューは、開示インジケータまたは詳細開示ボタンです。前者はデータ階層の次のレベルにつながり、後者は選択されたアイテムの詳細ビューにつながります。アクセサリビューは、スイッチやスライダーなどのフレームワークコントロールにすることも、カスタムビューにすることもできます。テーブルビューは、ユーザーがテーブルの行を挿入、削除、および並べ替えることができる編集モードに入ることができます。


3
拡張性の観点から考えると、コレクションビューの方が得点が高くなります。
thatzprem 2014

collectionviewが複雑さを増すことなくすべてのニーズに対応できるが柔軟性を提供するときに、なぜtableviewを使用する必要があるのか​​疑問に思っています(顧客がレイアウトを複数の列に拡張する必要がある場合、collectionviewでそれを行うのは非常に簡単です) )。私はいつもデフォルトでテーブルビューを使っていましたが、今はコレクションビューに切り替えるのが理にかなっているか疑問に思っています。何か不足していますか?
2018

そのすべては主な要件に基づいています。コレクションビューでは、グリッドを作成するために、すべての開発者がテーブルを使用して、それ以降のことを紹介しています。しかし、今では、collectionviewは、tableviewのようなレイアウトを作成するために使用するのに最も人気があります。同様に、私はコレクション
ビュー

説明してくれて、ありがとうございます。
ssowri1

45

これが私の基準です:

  • UITableViewで実行できる場合は、それを使用します

  • UITableViewがそれを実行するために多くのコードを必要とする場合、またはまったく実行できない場合は、UICollectionViewを使用します。

決定する前に、UITableViewの制限を考慮する必要があります。これは単一の列です。また、カスタマイズできるのはセルのみで、セクションの背景などはカスタマイズできません。したがって、余分な飾りのないもののまっすぐなリストがある場合は、基本的には沼地の標準iOSビューのように見えますが、UITableviewを使用します。カスタムインセット、または各セクションの周囲の境界線がある場合は、UICollectionViewを使用します。

ビューをテーブルビューとして開発し始めると非常にコストがかかるため、UICollectionViewをすべてのことについて実際に検討していますが、後で必要なことを実行できないことがわかります。直接体験;)

2つについてさらに経験を積んだ後で編集します。最後の段落は無視してください。UICollectionViewをUITableViewのように機能させるには、多くのボイラープレートコードが必要です。UICollectionViewは、本当に必要な場合にのみ使用してください。;)


3
探していた完璧な答え!これはもっと投票されるべきです!
rak appdev 2017年

2
あなたの個人的な経験と推奨事項を開示することは非常に役立ちます!
aero

1
私は間違いなくこれを読んで笑いました。UITableViewは、キューイングをオフセットするアニメーションを追加するとクラッシュすることを除いて、他と同じようにカスタマイズ可能です。アニメーションガイドを参考にして回答をお勧めします。また、内部ビューの数を個人的に調べて更新できるように掘り下げていくと、「区切り線を非表示にできない」という問題があり、最終的には驚くことではありません。誰でも。scrollView、UIButton、およびtableViewの非表示ビューは、それらが隠されていることがわかるまで、ほとんどのカスタマイズを破棄します
Stephen J

33

単純なリストと前方/後方ナビゲーションには、を使用しますUITableView

高度なカスタマイズが必要な場合は、を使用してくださいUICollectionView

一般的に言って、ソフトウェア開発では、「最も簡単なこと」を表すアプローチを選択するのが最善です。

編集:iOS 14以降、UICollectionViewリストも実行できるようになり、現在は推奨されるアプローチです。詳細と実装の詳細については、WWDC20からのこのセッションを参照してください:https ://developer.apple.com/videos/play/wwdc2020/10026/


14

私の見解によれば、collectionViewとtableViewの主な違いは

TABLEVIEW-> 1列のみのアイテムのリストを表示します。

COLLECTION-VIEW->複数列のアイテムのリストを表示します。

それがあなたを助けることを願っています。


11

UITableView for iPhoneを選択する場合は、最初にiPad戦略を検討してください。iPad固有のレイアウトが必要な場合は、その単一列のレイアウトをグリッドにすることができます。


8

必須ではありませんが、常にコレクションビューを使用します。そうすることで、さまざまな解像度でのコレクションの表示方法を簡単に調整できます。プラスは、将来リファクタリングするときに新しいタイプのセルをすばやく追加する準備ができていることです。

テーブルビューの意味がわかりません。コレクションビューを使用してテーブルを表すのは非常に簡単です。IMO。


4

データの表示方法に完全に依存しています。上記の多くの人が述べたように、データのセットが1つだけ必要で、それが複雑すぎない場合は、UITableView他の方法を使用してくださいUICollectionView

UICollectionView カスタマイズに対応しています。

複数のセルの高さを扱う場合は、に進みUICollectionViewます。


4

私の個人的な経験から、2つの要素は大まかに比較する必要があります。

TableView

TableViewは、データをリスト形式で表示するために設計されたUI要素です。UITableViewには標準で次のような特定の機能があります。

  • アクセサリービュー
  • セル選択スタイル
  • スタイルの編集(削除ボタンと編集ボタン)。

上記の要素により、リスト形式で表示および操作するときのデータの使いやすさが向上します。メールの閲覧など。

CollectionView

CollectionViewは、カスタムレイアウト(通常、リストではないもの)を使用してコンテンツを表示するために設計されたUI要素です。CollectionViewsは、完全にカスタマイズされたレイアウトスタイルでデータを表示する機能を改善し、動的にレイアウトを動的に変更します。次に例を示します。

  • 水平リスト
  • フォトギャラリー
  • サムネイル表示
  • カルーセル
  • ダイアル
  • 地図上の要素のレイアウト

CollectionViewsでは、複数の選択も可能です。

結論

上記からわかるように、どちらも完全に異なるユースケースを持ち、独自の特定のデータセットの開発と使いやすさを強化するために設計されています。

次の相互作用でリストスタイルで何かを表示している場合:-追加-削除-並べ替え次に、UITableViewは、ボックスから直接サポートを提供することにより、このプロセスを簡素化します。

それ以外の場合は、より柔軟にCollectionViewの利点を活用する必要があります。


2

どちらも要件によって異なります。テーブルビューは、さまざまな編集シナリオもサポートしています。このサポートは、コレクションビュークラスには実装されていません。これらのメソッドに依存するテーブルビューから変換する場合は、コレクションビューで少し余分な作業を行うことを期待してください。コレクションビューのセクションヘッダーは、ビュー内の任意の場所に配置できます。UITableViewは、選択された項目の値を取得することにより、タグなどのボタンを設定する必要はありません。


1

実際には、UITableViewだけが必要なときに、誰もが私が遭遇したUICollectionViewを使用します。「1次元です。上下します。なぜレイアウトとデータに不要なデリゲートメソッドを追加するのですか?」私はかつて、アニメーションマニュアルもHIGもUICollectionViewガイドも読んでいない所有者がそれを使用して可変の高さとアニメーションを追加することを決めたため、スタートアップがUICollectionViewCellが壊れた理由を見つけるのに役立つ追加の2時間を費やしました。言うまでもなく、余分なレイアウトデリゲート+ニブがないため、テーブルセルを使用するだけで回避できたビジネスクリティカルではない問題について、頭痛と多くの時間を費やしました。

これを正直に言えば、私はあなたのデータとディスプレイがそれを必要とするときにUICollectionViewのためにすべてです。彼らは非常に強力です。しかし実際には、私が見たほとんどの人がリストでそれらを使用しています。

これは別の欠陥を引き起こします。これらは、常に変更されない短い定数リストにも使用されます。この場合、Xibを作成します。または、それらを積み重ねるカスタムビューを記述します。どうして?ボタンやスイッチで5セットのラベルのメモリ管理が必要ないため。変更される可能性がある場合は、はい、リストを使用してください。物理学が必要な場合、UICollectionViewはいくつかのクールな効果でうまく機能します。しかし、5つのデリゲートメソッドと移動しない5つのラベルのレイアウトシステムを本当に追加する必要があるのでしょうか。

また、iOSにもネイティブのスタッキングビューが追加されたことを忘れないでください。2Dシステムやアニメーションシステムに精通している場合でも、思い通りに変形させることはできないので、組み込みのものを使用することはありません。

私が言っているのは、要件を定義することだけです。UIがアイテムを追加/削除したり、それ自体を更新したりしない場合は、これらのいずれも必要ないかもしれません。または、カードゲームを作成し、それらを仮想的にテーブルに置き、物理システムでUICollectionViewを使用して、レイアウトガイドを作成することもできます。


0

必要に応じて、TableViewまたはCollectionViewを選択します。

例:

電話連絡先については、tableViewが最適なオプションです。

フォトギャラリーの場合、コレクションビューが最適なオプションになります。


7
私はこれが置かれている方法に同意する一方で、意見のように見え、それは答えではなく単なるコメントであるべきだと思います。
ポパイ14

0

現在のプロジェクトでこの問題が発生しました。どちらを使用するか。私の場合、それは本当に簡単でした。両方必要でした。私のビューはUITableViewのように見えるようにし、その変更/レイアウトを変更する必要もありました。したがって、UICollectionViewが使用されました。また、追加のカスタマイズが不要なすべての場所でUITableViewを使用しています。UiTableViewには画像とテキストを含むデフォルトのレイアウトが付属しているので、簡単にするために使用します。


0

要件に基づいて、UITableViewまたはUICollectionビューを選択します。

画像やアイテムをグリッドタイプで表示したい場合、またはさらにカスタマイズが必要な場合は、UICollectionviewを使用します。

各項目を詳細および副詳細とともにリストするために、UITableViewを使用します。

UICollectionView: UICollectionViewクラスは、データ項目の順序付けられたコレクションを管理し、カスタマイズ可能なレイアウトを使用してそれらを提示します。コレクションビューは、単一ビューのレイアウトだけでなく、それ以外のものもサポートできることを除いて、テーブルビューと同じ一般的な機能を提供します。

UITableView:テーブルビューでは、項目のリストが1つの列に表示されます。UITableViewは垂直スクロールのみを許可しますが、UITableViewはUIScrollViewのサブクラスであり、ユーザーはテーブルをスクロールできます。


0

グリッドビュー表示の私のビューに従って、UIコレクションビューを使用します。他のすべてのリストビューはUITableビューを使用します


0

個人的には、UICollectionViewはUITableviewが実行できるほとんどの作業を実行できると思います。まあ、それと同時に、使用するのはより複雑です。

マネージャーが将来要件を変更する場合に備えて、UICollectionViewをTableViewとして使用することをお勧めします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.