Cela dépend des exigences. Le déroulement de l'application détermine le type d'interface utilisateur à intégrer dans l'application.
Les gens utilisent principalement UICollectionview
pour créer des types d'interfaces utilisateur avec plusieurs images affichées dans une grille. Cela aurait une logique complexe d'utilisation UITableView
, mais avec UICollectionview
, ce serait facile.
Lors de l'utilisation UICollectionview
, vous n'avez 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. Vous pouvez simplement entrer -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
et entrer UITableViewDelegate
:
`-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath`
Vous obtenez la ligne sélectionnée au lieu de l'élément, donc pour créer une grille ou des éléments modifiés, il UICollectionview
est préférable d' utiliser .
Pour les détails de la liste de chaque élément, les gens l'utilisent UITableView
car il affiche plus d'informations sur chaque élément.
Documents Apple:
Référence de 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 fournissent la même fonction générale que les vues de table, sauf qu'une vue de collection peut prendre en charge plus que des mises en page à une seule colonne. Les vues de collection prennent en charge les mises en page personnalisables qui peuvent être utilisées pour implémenter des grilles à plusieurs colonnes, des mises en page en mosaïque, des mises en page circulaires et bien d'autres. Vous pouvez même modifier la mise en page d'une vue de collection de manière dynamique si vous le souhaitez.
Référence de classe UITableView
Une vue 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 la table, bien que UITableView autorise uniquement le défilement vertical. Les cellules comprenant les éléments individuels du tableau 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 de détails; le premier conduit au niveau suivant dans une hiérarchie de données et le second 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 peuvent être des vues personnalisées. Les vues de tableau peuvent entrer dans un mode d'édition dans lequel les utilisateurs peuvent insérer, supprimer et réorganiser les lignes du tableau.
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 tenir compte des restrictions sur UITableView avant de prendre une décision: c'est une seule colonne. 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 supplémentaires - qui ressemble à une vue iOS standard de tourbière, en gros - alors utilisez UITableview. Si vous avez des encarts personnalisés ou une bordure autour de chaque section, utilisez UICollectionView.
En fait, j'envisage UICollectionView pour toutes choses simplement parce que c'est très cher lorsque vous commencez à développer votre vue sous forme de tableau, puis découvrez plus tard qu'il ne peut pas faire la seule chose dont vous avez besoin. Expérience de première main;)Modifier après encore plus d'expérience avec les deux: ne tenez pas compte de ce dernier paragraphe. UICollectionView nécessite beaucoup de code standard pour le faire fonctionner comme un UITableView. Utilisez UICollectionView uniquement lorsque cela est vraiment nécessaire. ;)
la source
Pour les listes simples et la navigation avant / arrière, utilisez
UITableView
.Si vous avez besoin d'un degré élevé de personnalisation, utilisez
UICollectionView
.D'une manière générale, dans le développement de logiciels, il est préférable de choisir l'approche qui représente «la chose la plus simple possible».
EDIT: À partir d'iOS 14,
UICollectionView
peut maintenant faire des listes et c'est maintenant l'approche recommandée. Consultez cette session de la WWDC20 pour plus d'informations et de détails sur la mise en œuvre: https://developer.apple.com/videos/play/wwdc2020/10026/la source
Selon mon point de vue, la principale différence entre collectionView et tableView est que
J'espère que cela vous aidera.
la source
Si vous choisissez UITableView pour iPhone, assurez-vous d'avoir d'abord considéré votre stratégie iPad. Si vous souhaitez une disposition spécifique à l'iPad, vous souhaiterez peut-être que cette disposition à une seule colonne devienne une grille.
la source
Bien que ce ne soit pas obligatoire, j'utilise toujours une vue de collection. De cette façon, je peux facilement adapter la présentation de mes collections à des résolutions différentes. Un avantage est qu'il est prêt à ajouter rapidement de nouveaux types de cellules lors de la refactorisation à l'avenir.
Je ne vois aucun intérêt aux tables vues. Il est très simple d'utiliser une vue de collection pour représenter une table. IMO.
la source
Cela dépend totalement de la façon dont vos données doivent être 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 une
UITableView
autre utilisationUICollectionView
.UICollectionView
est convivial pour la personnalisation.Si vous avez affaire à plusieurs hauteurs de cellule, optez pour
UICollectionView
.la source
D'après mon expérience personnelle, les deux éléments ne devraient être comparés que vaguement.
Vue de tableau
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 un UITableView, telles que:
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 e-mails.
CollectionView
Un CollectionView est un élément d'interface utilisateur conçu pour afficher du contenu à l'aide d'une mise en page personnalisée (généralement tout ce qui n'est pas une liste). CollectionViews améliore la fonctionnalité d'affichage des données dans des styles de mise en page entièrement sur mesure et modifie également dynamiquement les mises en page à la volée. Quelques exemples sont:
CollectionViews permet également des sélections multiples.
Conclusion
Comme vous pouvez le voir dans ce qui précède, 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 spécifiques.
Si vous cherchez à afficher quoi que ce soit dans un style de liste avec les interactions suivantes: - Ajout - Suppression - Réorganisation Ensuite, un UITableView simplifiera ce processus en fournissant le support dès la sortie de la boîte.
Pour le reste, vous devez tirer parti des avantages de CollectionView car vous disposez de plus de flexibilité.
la source
Les deux dépendent des exigences. Les vues de table prennent également en charge divers scénarios d'édition. Cette prise en charge n'a pas été implémentée dans les classes Collection View. Si vous effectuez une conversion à partir d'une vue de table qui repose sur ces méthodes, attendez-vous à faire un peu plus de travail dans la vue de collection. Les en-têtes de section de la vue de collection 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 choses en obtenant les valeurs des éléments sélectionnés.
la source
En pratique, tout le monde utilise UICollectionView que j'ai rencontré, alors qu'ils n'ont besoin que d'un UITableView. "C'est unidimensionnel. Il monte et descend. Pourquoi ajoutez-vous des méthodes de délégation inutiles pour la mise en page ET les données?". Une fois, j'ai passé 2 heures supplémentaires à aider une startup à découvrir pourquoi son UICollectionViewCell a été écrasé parce que le propriétaire, qui n'a pas lu le manuel Animations, ni HIG, ni le guide UICollectionView, a décidé de l'utiliser et d'ajouter des hauteurs et des animations variables. Inutile de dire qu'il s'est donné mal à la tête et a perdu beaucoup de temps sur un problème non critique 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.
Permettez-moi de clarifier les choses, je suis tout à fait pour UICollectionView lorsque vos données et votre affichage en ont besoin. Ils sont très puissants. Mais en pratique, la plupart des gens que j'ai vus les utilisent 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, créez simplement 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 interrupteur. S'ils 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 déléguées et un système de mise en page pour 5 étiquettes qui ne bougeront jamais?
De plus, je n'oublie pas qu'iOS a maintenant une vue d'empilement native. Je ne peux jamais le faire déformer comme je le souhaite, même si je suis assez doué pour les systèmes 2D et d'animation, donc je n'utilise jamais le système intégré.
Tout ce que je dis, c'est de définir vos besoins. Peut-être que vous n'avez besoin ni de l'un ni de l'autre, si votre interface utilisateur n'ajoute / ne supprime pas d'éléments et ne se rafraîchit pas. Ou peut-être voulez-vous écrire un jeu de cartes et les jeter virtuellement sur une table, puis utiliser UICollectionView avec un système physique pour son guide de mise en page.
la source
En fonction de nos besoins, nous choisissons TableView ou CollectionView.
Exemple:
la source
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 de ma vue pour ressembler à UITableView et aussi pour changer sa modification / mise en page. Ainsi, UICollectionView a été utilisé. J'utilise également UITableView partout où je n'ai pas besoin de personnalisation supplémentaire. Étant donné que UiTableView est livré avec une disposition par défaut qui comprend des images et du texte, je l'utilise pour plus de simplicité.
la source
En fonction de nos besoins, nous choisissons la vue UITableView ou UICollection.
Si nous voulons afficher des images ou des éléments sous forme 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.
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 fournissent la même fonction générale que les vues de table, sauf qu'une vue de collection peut prendre en charge plus que des mises en page à une seule colonne.
UITableView: une vue de table 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 la table, bien que UITableView autorise uniquement le défilement vertical.
la source
Selon ma vue pour l'affichage Grid View, utilisez UI Collection View.Toutes les autres vues de liste utilisent UITable View
la source
Personnellement, je pense que UICollectionView peut faire la plupart du travail que UITableview peut faire. eh bien, en même temps, c'est plus complexe à utiliser.
Je vous suggère d'utiliser UICollectionView comme TableView au cas où votre responsable changerait à l'avenir.
la source