web-dev-qa-db-fra.com

Quand utiliser UICollectionView au lieu de UITableView?

J'ai trouvé que UICollectionView ressemblait à une version améliorée de UITableView introduite dans iOS6, mais quand devrais-je choisir UICollectionView au lieu de UITableView?

Il existe encore des applications utilisant UITableView, si UICollectionView peut faire quelque chose que UITableView puisse faire, pourquoi les gens utilisent-ils toujours UITableView? Existe-t-il une différence en termes de performance?

Merci!

84
wz366

Cela dépend des exigences. La façon dont l’application se déroule détermine le type d’interface utilisateur à intégrer à l’application.

Les gens utilisent principalement le UICollectionview pour créer des types d’UI avec plusieurs images montrées dans une grille. Cela aurait une logique complexe utilisant UITableView, mais avec UICollectionview, ce serait facile.

Lorsque vous utilisez UICollectionview, vous n'avez pas besoin de définir des boutons avec des balises ou autre chose en obtenant les valeurs des éléments sélectionnés. Vous pouvez simplement obtenir -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath et dans UITableViewDelegate:

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

Vous obtenez la ligne sélectionnée à la place de l'élément. Par conséquent, pour créer des éléments en grille ou modifiés, il est préférable d'utiliser UICollectionview.

Pour les détails de chaque élément, les utilisateurs utilisent UITableView car il affiche plus d’informations sur chaque élément.

Apple Docs:

Référence de la classe UICollectionView

La classe UICollectionView gère une collection ordonnée d'éléments de données et les présente à l'aide de dispositions personnalisables. Les vues de collection offrent la même fonction générale que les vues de tableau, à la différence qu’une vue de collection peut prendre en charge davantage que des présentations à une colonne. Les vues de collection prennent en charge des présentations personnalisables pouvant être utilisées pour implémenter des grilles à colonnes multiples, des présentations en mosaïque, des présentations circulaires, etc. Vous pouvez même modifier la disposition d'une vue de collection de manière dynamique si vous le souhaitez.

Référence de la classe UITableView

Une vue sous forme de tableau affiche une liste d'éléments dans une seule colonne. UITableView est une sous-classe de UIScrollView, qui permet aux utilisateurs de faire défiler le tableau, même si UITableView autorise uniquement le défilement vertical. Les cellules constituant les éléments individuels de la table sont des objets UITableViewCell; UITableView utilise ces objets pour dessiner les lignes visibles de la table. Les cellules ont un contenu (titres et images) et peuvent avoir, près du bord droit, des vues accessoires. Les vues accessoires standard sont des indicateurs de divulgation ou des boutons de divulgation détaillés; le premier conduit au niveau suivant dans une hiérarchie de données et le dernier conduit à une vue détaillée d'un élément sélectionné. Les vues accessoires peuvent également être des contrôles de structure, tels que des commutateurs et des curseurs, ou des vues personnalisées. Les vues de table peuvent entrer dans un mode d'édition dans lequel les utilisateurs peuvent insérer, supprimer et réorganiser les lignes de la table.

69
Nitin Gohel

Voici mes critères:

  • Si un UITableView peut le faire, utilisez-le

  • Si un UITableView a besoin de beaucoup de code pour le faire ou ne peut pas le faire du tout, utilisez UICollectionView.

Vous devez prendre en compte les restrictions sur UITableView avant de prendre une décision: c'est une colonne unique. Et vous ne pouvez personnaliser que les cellules, mais pas les arrière-plans de section et autres. Donc, si vous avez une liste simple de choses sans fioritures - qui ressemble à une vue iOS standard standard, utilisez alors UITableview. Si vous avez des encarts personnalisés ou une bordure autour de chaque section, utilisez UICollectionView.

En fait, je considère UICollectionView pour tout simplement parce que cela coûte très cher lorsque vous commencez à développer votre vue sous forme de tableau, puis que vous découvrez plus tard qu'il ne peut pas faire la chose dont vous avez besoin. Expérience 1ère main;)

Éditez après encore plus d'expérience avec les deux: Ignorez ce dernier paragraphe. UICollectionView nécessite beaucoup de code standard pour fonctionner comme un UITableView. Utilisez UICollectionView uniquement lorsque cela est vraiment nécessaire. ;)

39
n13

Pour les listes simples et la navigation en avant/en arrière, utilisez UITableView.

Si vous avez besoin d’un haut degré de personnalisation, utilisez UICollectionView.

De manière générale, dans le développement logiciel, il est préférable de choisir l'approche qui représente "la chose la plus simple possible".

29
Andrew Ebling

Selon mon point de vue, la principale différence entre collectionView et tableView est que

TABLEVIEW -> affiche la liste des éléments dans une seule colonne.

COLLECTION-VIEW -> affiche la liste des éléments dans plusieurs colonnes.

J'espère que cela vous aidera.

12

Si vous choisissez UITableView pour iPhone, assurez-vous d’avoir envisagé d’abord votre stratégie iPad. Si vous souhaitez une disposition spécifique à l'iPad, vous pouvez également souhaiter que cette disposition à une colonne devienne une grille.

11
BricoleurDev

Bien que ce ne soit pas obligatoire, j'utilise toujours une collectionview. De cette façon, je peux facilement adapter la présentation de mes collections à différentes résolutions. Un avantage est qu'il est prêt à ajouter rapidement de nouveaux types de cellules lors de la refactorisation future.

Je ne vois aucun point de tableviews. Il est très simple d'utiliser une vue de collection pour représenter une table. OMI.

6
Chris Van Buskirk

Cela dépend totalement de la manière dont vos données seront affichées. Comme mentionné par beaucoup ci-dessus, si vous n'avez besoin que d'un seul ensemble de données et que ce n'est pas trop complexe, optez pour UITableView sinon utilisez UICollectionView.

UICollectionView est adapté à la personnalisation.

Si vous avez plusieurs hauteurs de cellules, optez pour UICollectionView.

4
thoughtbreaker

D'après mon expérience personnelle, les deux éléments ne devraient être comparés que vaguement.

TableView

Un TableView est un élément d'interface utilisateur conçu pour afficher des données dans un format de liste. Certaines fonctionnalités sont fournies en standard avec UITableView, telles que:

  • Vue accessoire
  • Style de sélection de cellule
  • Style de montage (boutons Supprimer et Modifier).

Les éléments ci-dessus améliorent la convivialité des données lors de l'affichage et de l'interaction dans un format de liste. Tels que la visualisation des emails.

CollectionView

Un CollectionView est un élément d'interface utilisateur conçu pour afficher du contenu à l'aide d'une disposition personnalisée (généralement tout ce qui n'est pas une liste). CollectionViews améliore les fonctionnalités d'affichage de données dans des styles de présentation entièrement personnalisés et de modifications dynamiques des présentations à la volée. Certains exemples sont:

  • Listes Horizonales
  • Galeries De Photos
  • Vues miniatures
  • Carrousels
  • Cadrans
  • Disposer des éléments sur une carte
  • etc.

CollectionViews permet également plusieurs sélections.

Conclusion

Comme vous pouvez le constater ci-dessus, les deux ont des cas d'utilisation complètement différents et sont conçus pour améliorer le développement et la convivialité de leurs propres ensembles de données.

Si vous souhaitez afficher quelque chose dans un style de liste avec les interactions suivantes: - Ajout - Suppression - Re-commande Ensuite, une UITableView simplifiera ce processus en fournissant un support immédiat.

Sinon, vous devez tirer parti des avantages de CollectionView pour plus de flexibilité.

3
Matthew Cawley

Les deux sont dépend des exigences. Les vues de table prennent également en charge une variété de scénarios d'édition. Cette prise en charge n'a pas été implémentée dans les classes Collection View. Si vous effectuez la conversion à partir d'une vue de table reposant sur ces méthodes, attendez-vous à faire un peu plus de travail dans la vue de collection. Les en-têtes de section Collection View peuvent être placés n'importe où dans la vue. et UITableView n'ont pas besoin de définir des boutons avec des balises ou d'autres éléments en obtenant les valeurs des éléments sélectionnés.

2
Bhumesh Purohit

En pratique, tout le monde utilise UICollectionView que j'ai rencontré, alors qu'il ne nécessite qu'un UITableView. "Il est unidimensionnel. Il monte et descend. Pourquoi ajoutez-vous des méthodes de délégation inutiles pour la présentation ET les données?". Une fois, j'ai passé 2 heures supplémentaires à aider une start-up à comprendre pourquoi leur UICollectionViewCell avait été écrasée parce que le propriétaire, qui n'avait pas lu le manuel d'Animations, ni HIG, ni le guide UICollectionView, avait décidé de l'utiliser et d'ajouter des hauteurs et des animations variables. Il va sans dire qu'il se donnait mal à la tête et qu'il perdait beaucoup de temps sur un problème non lié à l'entreprise qu'il aurait pu éviter en utilisant simplement une cellule de tableau car il n'y a pas de délégué de mise en page supplémentaire + Nib.

Laissez-moi bien comprendre, je suis tout à fait favorable à UICollectionView lorsque vos données et votre affichage en ont besoin. Ils sont très puissants. Mais dans la pratique, la plupart des gens que j'ai vus les utilisaient sur des listes.

Cela soulève un autre défaut. Ils sont également utilisés sur des listes courtes et constantes qui ne changeront jamais. Dans ce cas, il suffit de faire un Xib. Ou écrivez une vue personnalisée qui les empile. Pourquoi? Parce que vous n'avez pas besoin de la gestion de la mémoire pour 5 jeux d'étiquettes avec un bouton ou un commutateur. Si elles peuvent changer, alors oui, utilisez une liste. Si vous voulez de la physique, UICollectionView fonctionne bien avec quelques effets sympas. Mais avez-vous vraiment besoin d'ajouter 5 méthodes de délégation et un système de disposition pour 5 étiquettes qui ne seront jamais déplacées?

En outre, je n'oublie pas qu'iOS possède également une vue d'empilement native. Je ne parviens jamais à le faire se déformer comme je le souhaite, même si je suis assez expérimenté en 2D et en systèmes d’animation, je n’utilise donc jamais les systèmes intégrés.

Tout ce que je dis, c'est définir vos besoins. Peut-être n'avez-vous pas besoin de l'un ou l'autre, si votre interface utilisateur n'ajoute/supprime pas d'éléments et ne se rafraîchit pas. Ou peut-être souhaitez-vous écrire un jeu de cartes et le jeter virtuellement sur une table, puis utiliser UICollectionView avec un système de physique pour son guide de présentation.

1
Stephen J

J'ai eu ce problème dans mon projet actuel. Lequel utiliser. Dans mon cas, c'était vraiment simple. J'avais besoin des deux. J'avais besoin que ma vue ressemble à UITableView et qu'elle change également. Donc, UICollectionView a été utilisé. J'utilise également UITableView partout où je n'ai besoin d'aucune personnalisation supplémentaire. UiTableView étant livré avec une mise en page par défaut comprenant des images et du texte, je l’utilise par simplicité.

0
Robert J. Clegg

En fonction de nos besoins, nous choisissons UITableView ou UICollection.

Si nous voulons afficher des images ou des éléments en type de grille ou si nous avons besoin de plus de personnalisation, nous utilisons UICollectionview.

Pour lister chaque article avec des détails et des sous-détails, nous utilisons UITableView.

ICollectionView: La classe UICollectionView gère une collection ordonnée d'éléments de données et les présente à l'aide de dispositions personnalisables. Les vues de collection offrent la même fonction générale que les vues de tableau, à la différence qu’une vue de collection peut prendre en charge davantage que des présentations à une colonne.

ITableView: Une vue sous forme de tableau affiche une liste d'éléments dans une seule colonne. UITableView est une sous-classe de UIScrollView, qui permet aux utilisateurs de faire défiler le tableau, même si UITableView autorise uniquement le défilement vertical.

0
firoz khan

En fonction de nos besoins, nous choisissons TableView ou CollectionView.

Exemple:

Pour les contacts téléphoniques, tableView est la meilleure option.

Pour la galerie de photos, la vue collection sera la meilleure option.

0
Ramdhas