Wann soll UICollectionView anstelle von UITableView verwendet werden?

92

Ich fand , dass UICollectionViewwie eine aktualisierte Version von ist UITableViewin iOS6 eingeführt, aber wann soll ich wählen UICollectionViewstatt UITableView?

Es gibt immer noch Apps, die verwenden UITableView, wenn UICollectionViewsie etwas UITableViewtun können, warum werden sie dann immer noch verwendet UITableView? Gibt es einen Leistungsunterschied?

Vielen Dank!

wz366
quelle

Antworten:

75

Das hängt von den Anforderungen ab. Wie die Anwendung fließt, bestimmt, welche Art von Benutzeroberfläche in die Anwendung integriert werden soll.

Die UICollectionviewBenutzer verwenden das hauptsächlich zum Erstellen von Benutzeroberflächentypen mit mehreren Bildern, die in einem Raster angezeigt werden. Dies hätte eine komplexe Logik UITableView, aber mit UICollectionviewwäre es einfach.

Bei der Verwendung UICollectionviewmüssen Sie keine Schaltflächen mit Tags oder anderen Elementen festlegen, indem Sie ausgewählte Elementwerte abrufen. Sie können einfach ein- -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPathund einsteigen UITableViewDelegate:

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

Sie erhalten die ausgewählte Zeile anstelle des Elements. Verwenden Sie zum Erstellen von Raster- oder geänderten Elementen UICollectionviewam besten.

Für die Auflistungsdetails jedes Artikels verwenden die Benutzer, UITableViewda dort mehr Informationen zu jedem Artikel angezeigt werden.

Apple Docs:

UICollectionView-Klassenreferenz

Die UICollectionView-Klasse verwaltet eine geordnete Sammlung von Datenelementen und präsentiert sie in anpassbaren Layouts. Sammlungsansichten bieten dieselbe allgemeine Funktion wie Tabellenansichten, außer dass eine Sammlungsansicht mehr als nur einspaltige Layouts unterstützen kann. Sammlungsansichten unterstützen anpassbare Layouts, mit denen mehrspaltige Raster, gekachelte Layouts, kreisförmige Layouts und vieles mehr implementiert werden können. Sie können das Layout einer Sammlungsansicht sogar dynamisch ändern, wenn Sie möchten.

UITableView-Klassenreferenz

In einer Tabellenansicht wird eine Liste von Elementen in einer einzelnen Spalte angezeigt. UITableView ist eine Unterklasse von UIScrollView, mit der Benutzer durch die Tabelle scrollen können, obwohl UITableView nur vertikales Scrollen zulässt. Die Zellen, aus denen die einzelnen Elemente der Tabelle bestehen, sind UITableViewCell-Objekte. UITableView verwendet diese Objekte, um die sichtbaren Zeilen der Tabelle zu zeichnen. Zellen haben Inhalt - Titel und Bilder - und können am rechten Rand zusätzliche Ansichten haben. Standard-Zubehöransichten sind Offenlegungsindikatoren oder detaillierte Offenlegungsschaltflächen. Ersteres führt zur nächsten Ebene in einer Datenhierarchie und letzteres führt zu einer detaillierten Ansicht eines ausgewählten Elements. Zubehöransichten können auch Framework-Steuerelemente wie Schalter und Schieberegler oder benutzerdefinierte Ansichten sein. Tabellenansichten können in einen Bearbeitungsmodus wechseln, in dem Benutzer Zeilen der Tabelle einfügen, löschen und neu anordnen können.

Nitin Gohel
quelle
3
Ich denke in Bezug auf die Erweiterbarkeit - Sammlungsansicht punktet mehr !!
Thatzprem
Ich frage mich, warum man jemals die Tabellenansicht verwenden muss, wenn die Sammlungsansicht alle Anforderungen ohne zusätzliche Komplexität erfüllen kann, aber Flexibilität bietet (wenn ein Kunde das Layout jemals auf mehr als eine Spalte erweitern muss, wäre es ziemlich einfach, dies mit der Sammlungsansicht zu tun ). Ich habe standardmäßig immer Tabellenansichten verwendet, aber jetzt bezweifle ich, dass es sinnvoll ist, stattdessen zu Sammlungsansichten zu wechseln. Vermisse ich etwas
Vir uns
Alles basiert auf der Hauptanforderung. Die Sammlungsansicht wird spät eingeführt, und bis dahin verwenden alle Entwickler Tabellen, um Raster und dergleichen zu erstellen. Jetzt ist eine Sammlungsansicht für Tage am populärsten, um ein Layout wie eine Tabellenansicht zu erstellen. Ich denke auch nicht, dass es eine schlechte Idee ist, Sammlungsansichten zu verwenden
Nitin Gohel
Ich danke Ihnen für Ihre Erklärung.
ssowri1
45

Hier sind meine Kriterien:

  • Wenn ein UITableView dies kann, verwenden Sie es

  • Wenn eine UITableView dafür viel Code benötigt oder überhaupt nicht kann, verwenden Sie UICollectionView.

Sie müssen die Einschränkungen von UITableView berücksichtigen, bevor Sie eine Entscheidung treffen: Es ist eine einzelne Spalte. Und Sie können nur die Zellen anpassen, nicht aber Abschnittshintergründe und dergleichen. Wenn Sie also eine übersichtliche Liste von Dingen ohne zusätzlichen Schnickschnack haben - das sieht im Grunde genommen wie eine Standard-iOS-Ansicht aus -, verwenden Sie UITableview. Wenn Sie benutzerdefinierte Einfügungen oder einen Rahmen um jeden Abschnitt haben, verwenden Sie UICollectionView.

Ich erwäge UICollectionView eigentlich für alle Dinge, einfach weil es sehr teuer ist, wenn Sie anfangen, Ihre Ansicht als Tabellenansicht zu entwickeln, und später herausfinden, dass es nicht das tun kann, was Sie brauchen. Erfahrung aus erster Hand;)

Bearbeiten Sie nach noch mehr Erfahrung mit den beiden: Ignorieren Sie den letzten Absatz. UICollectionView erfordert viel Boilerplate-Code, damit es wie ein UITableView funktioniert. Verwenden Sie UICollectionView nur, wenn es wirklich benötigt wird. ;)

n13
quelle
3
Perfekte Antwort, die ich gesucht habe! Dies sollte mehr abgestimmt werden!
Rak Appdev
2
Die Offenlegung Ihrer persönlichen Erfahrungen und Empfehlungen ist sehr hilfreich!
Aero
1
Ich habe definitiv gekichert, als ich das gelesen habe, gut gesagt! UITableView ist genauso anpassbar wie alles andere, außer dass es abstürzt, wenn Sie Animationen hinzufügen, die die Warteschlange ausgleichen. Ich würde Ihre Antwort empfehlen, um mit dem Animationshandbuch fortzufahren, und ein bisschen zu graben, um persönlich zu erfahren, wie viele interne Ansichten vorhanden sind, damit Sie sie aktualisieren können, und das Problem "Ich kann die Trennlinie nicht unsichtbar machen", das Sie schließlich finden, wird Sie nicht überraschen jemand. Versteckte Ansichten in scrollView, UIButton und tableView werfen die meisten Anpassungen auf, bis Sie wissen, dass sie in den Dingen versteckt sind
Stephen J
33

Verwenden Sie für einfache Listen und Vorwärts- / Rückwärtsnavigationen UITableView.

Wenn Sie ein hohes Maß an Anpassbarkeit benötigen, verwenden Sie UICollectionView.

Im Allgemeinen ist es in der Softwareentwicklung am besten, den Ansatz zu wählen, der "The Simplest Possible Thing" darstellt.

BEARBEITEN: Ab iOS 14 UICollectionViewkönnen jetzt auch Listen erstellt werden und dies ist jetzt der empfohlene Ansatz. Weitere Informationen und Implementierungsdetails finden Sie in dieser Sitzung von WWDC20: https://developer.apple.com/videos/play/wwdc2020/10026/

Andrew Ebling
quelle
14

Meiner Ansicht nach besteht der Hauptunterschied zwischen collectionView und tableView darin, dass

TABLEVIEW -> Liste der Elemente in nur einer Spalte anzeigen.

COLLECTION-VIEW -> Liste der Elemente in mehreren Spalten anzeigen.

Hoffe es wird dir helfen.

Muhammad Waqas Bhati
quelle
11

Wenn Sie sich für UITableView für iPhone entscheiden, stellen Sie sicher, dass Sie zuerst Ihre iPad-Strategie berücksichtigt haben. Wenn Sie ein iPad-spezifisches Layout wünschen, möchten Sie möglicherweise, dass dieses einspaltige Layout zu einem Raster wird.

BricoleurDev
quelle
8

Obwohl es nicht erforderlich ist, verwende ich immer eine Sammlungsansicht. Auf diese Weise kann ich die Darstellung meiner Sammlungen leicht für unterschiedliche Auflösungen anpassen. Ein Plus ist, dass es bereit ist, neue Zelltypen beim zukünftigen Refactoring schnell hinzuzufügen.

Ich sehe keinen Sinn für Tabellenansichten. Es ist sehr einfach, eine Sammlungsansicht zur Darstellung einer Tabelle zu verwenden. IMO.

Chris Van Buskirk
quelle
4

Es hängt völlig davon ab, wie Ihre Daten angezeigt werden. Wie von vielen oben erwähnt, sollten Sie eine UITableViewandere Verwendung verwenden , wenn Sie nur einen einzigen Datensatz benötigen, der zu komplex ist UICollectionView.

UICollectionView ist anpassungsfreundlich.

Wenn Sie mit mehreren Zellenhöhen oder so zu tun haben, dann entscheiden Sie sich für UICollectionView.

Gedankenbrecher
quelle
4

Aus meiner persönlichen Erfahrung sollten die beiden Elemente nur lose verglichen werden.

Tabellenansicht

Eine TableView ist ein UI-Element zum Anzeigen von Daten in einem Listenformat. Es gibt bestimmte Funktionen, die standardmäßig in UITableView enthalten sind, z.

  • Zubehöransicht
  • Zellenauswahlstil
  • Stil bearbeiten (Schaltflächen löschen und bearbeiten).

Die oben genannten Elemente verbessern die Verwendbarkeit von Daten bei der Anzeige und Interaktion in einem Listenformat. Wie das Anzeigen von E-Mails.

CollectionView

Eine CollectionView ist ein UI-Element, mit dem Inhalte mithilfe eines benutzerdefinierten Layouts angezeigt werden können (normalerweise alles, was keine Liste ist). CollectionViews verbessern die Funktionalität der Anzeige von Daten in vollständig maßgeschneiderten Layoutstilen und ändern dynamisch Layouts im laufenden Betrieb. Einige Beispiele sind:

  • Horizontale Listen
  • Fotogalerien
  • Miniaturansichten
  • Karussells
  • Zifferblätter
  • Elemente auf einer Karte auslegen
  • etc.

CollectionViews ermöglichen auch eine Mehrfachauswahl.

Fazit

Wie Sie oben sehen können, haben beide völlig unterschiedliche Anwendungsfälle und dienen dazu, die Entwicklung und Benutzerfreundlichkeit ihrer eigenen spezifischen Datensätze zu verbessern.

Wenn Sie etwas in einem Listenstil mit den folgenden Interaktionen anzeigen möchten: - Hinzufügen - Löschen - Neu anordnen Dann vereinfacht eine UITableView diesen Vorgang, indem sie die Unterstützung sofort bereitstellt.

Bei allem anderen sollten Sie die Vorteile von CollectionView nutzen, um mehr Flexibilität zu erhalten.

Matthew Cawley
quelle
2

Beides hängt von den Anforderungen ab. Tabellenansichten unterstützen auch eine Vielzahl von Bearbeitungsszenarien. Diese Unterstützung wurde in den Sammlungsansichtsklassen nicht implementiert. Wenn Sie aus einer Tabellenansicht konvertieren, die auf diesen Methoden basiert, müssen Sie in der Sammlungsansicht mit einem etwas zusätzlichen Heben rechnen. Abschnittsüberschriften der Sammlungsansicht können an einer beliebigen Stelle in der Ansicht platziert werden. und UITableView müssen keine Schaltflächen mit Tags oder anderen Dingen festlegen, indem ausgewählte Elementwerte abgerufen werden.

Bhumesh Purohit
quelle
1

In der Praxis verwendet jeder UICollectionView, auf den ich gestoßen bin, wenn er nur ein UITableView benötigt. "Es ist eindimensional. Es geht auf und ab. Warum fügen Sie unnötige Delegierungsmethoden für Layout UND Daten hinzu?" Ich habe einmal zusätzliche 2 Stunden damit verbracht, einem Startup zu helfen, herauszufinden, warum seine UICollectionViewCell gequetscht wurde, weil der Besitzer, der weder das Animationshandbuch noch HIG oder das UICollectionView-Handbuch gelesen hat, beschlossen hat, es zu verwenden und variable Höhen und Ziele hinzuzufügen. Unnötig zu erwähnen, dass er sich selbst Kopfschmerzen bereitete und viel Zeit für ein nicht geschäftskritisches Problem verlor, das er durch die Verwendung einer Tabellenzelle hätte vermeiden können, da es keinen zusätzlichen Layout-Delegierten + Feder gibt.

Lassen Sie mich das klarstellen. Ich bin alles für UICollectionView, wenn Ihre Daten und Ihre Anzeige dies benötigen. Sie sind sehr mächtig. Aber in der Praxis haben die meisten Leute, die ich gesehen habe, sie auf Listen verwendet.

Dies bringt einen weiteren Fehler mit sich. Sie werden auch auf kurzen, konstanten Listen verwendet, die sich niemals ändern werden. In diesem Fall machen Sie einfach eine Xib. Oder schreiben Sie eine benutzerdefinierte Ansicht, die sie stapelt. Warum? Weil Sie die Speicherverwaltung für 5 Sätze von Etiketten mit einer Schaltfläche oder einem Schalter nicht benötigen. Wenn sie sich ändern könnten, verwenden Sie eine Liste. Wenn Sie Physik wollen, dann funktioniert UICollectionView gut mit einigen coolen Effekten. Aber müssen Sie wirklich 5 Delegierungsmethoden und ein Layoutsystem für 5 Beschriftungen hinzufügen, die sich niemals bewegen werden?

Außerdem vergesse ich nicht, dass iOS jetzt auch eine native Stapelansicht hat. Ich kann es nie dazu bringen, mich zu verformen, wie ich will, obwohl ich mit den 2D- und Animationssystemen ziemlich vertraut bin, also benutze ich nie das eingebaute.

Ich sage nur, definieren Sie Ihre Anforderungen. Möglicherweise benötigen Sie beides nicht, wenn Ihre Benutzeroberfläche keine Elemente hinzufügt / entfernt und sich selbst aktualisiert. Oder vielleicht möchten Sie ein Kartenspiel schreiben und es virtuell auf einen Tisch werfen und dann UICollectionView mit einem Physiksystem als Layout-Leitfaden verwenden.

Stephen J.
quelle
0

Je nach Bedarf wählen wir TableView oder CollectionView.

Beispiel:

Für Telefonkontakte ist tableView die beste Option.

Für die Fotogalerie ist die Sammlungsansicht die beste Option.

Ramdhas
quelle
7
Obwohl ich damit einverstanden bin, scheint die Art und Weise, wie dies formuliert wurde, eher eine Meinung zu sein, und ich denke, es sollte nur ein Kommentar sein, keine Antwort.
Popeye
0

Ich hatte dieses Problem in meinem aktuellen Projekt. Welche zu verwenden. In meinem Fall war es wirklich einfach. Ich brauchte beides. Ich brauchte meine Ansicht, um wie UITableView auszusehen und auch ihre Änderung / ihr Layout zu ändern. Daher wurde UICollectionView verwendet. Ich verwende UITableView auch überall dort, wo ich keine zusätzlichen Anpassungen benötige. Da UiTableView mit einem Standardlayout geliefert wird, das Bilder und Text enthält, verwende ich es der Einfachheit halber.

Robert J. Clegg
quelle
0

Basierend auf unserer Anforderung wählen wir UITableView oder UICollection View.

Wenn wir Bilder oder Elemente im Rastertyp anzeigen möchten oder mehr Anpassbarkeit benötigen, verwenden wir UICollectionview.

Für die Auflistung jedes Elements mit Details und Unterdetails verwenden wir UITableView.

UICollectionView: Die UICollectionView-Klasse verwaltet eine geordnete Sammlung von Datenelementen und präsentiert sie mithilfe anpassbarer Layouts. Sammlungsansichten bieten dieselbe allgemeine Funktion wie Tabellenansichten, außer dass eine Sammlungsansicht mehr als nur einspaltige Layouts unterstützen kann.

UITableView: In einer Tabellenansicht wird eine Liste von Elementen in einer einzelnen Spalte angezeigt. UITableView ist eine Unterklasse von UIScrollView, mit der Benutzer durch die Tabelle scrollen können, obwohl UITableView nur vertikales Scrollen zulässt.

Firoz Khan
quelle
0

Verwenden Sie gemäß meiner Ansicht für die Rasteransicht die UI-Sammlungsansicht. Alle anderen Listenansichten verwenden die UITable-Ansicht

Subathra D.
quelle
0

Persönlich denke ich, dass UICollectionView den größten Teil der Arbeit erledigen kann, die UITableview leisten kann. Gleichzeitig ist die Verwendung komplexer.

Ich schlage vor, Sie verwenden UICollectionView als TableView, nur für den Fall, dass Ihr Manager in Zukunft die Anforderungen ändert.

Qi Li
quelle