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 UICollectionview
Benutzer 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 UICollectionview
wäre es einfach.
Bei der Verwendung UICollectionview
mü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 *)indexPath
und 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 UICollectionview
am besten.
Für die Auflistungsdetails jedes Artikels verwenden die Benutzer, UITableView
da 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.
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. ;)
quelle
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
UICollectionView
kö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/quelle
Meiner Ansicht nach besteht der Hauptunterschied zwischen collectionView und tableView darin, dass
Hoffe es wird dir helfen.
quelle
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.
quelle
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.
quelle
Es hängt völlig davon ab, wie Ihre Daten angezeigt werden. Wie von vielen oben erwähnt, sollten Sie eine
UITableView
andere Verwendung verwenden , wenn Sie nur einen einzigen Datensatz benötigen, der zu komplex istUICollectionView
.UICollectionView
ist anpassungsfreundlich.Wenn Sie mit mehreren Zellenhöhen oder so zu tun haben, dann entscheiden Sie sich für
UICollectionView
.quelle
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.
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:
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.
quelle
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.
quelle
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.
quelle
Je nach Bedarf wählen wir TableView oder CollectionView.
Beispiel:
quelle
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.
quelle
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.
quelle
Verwenden Sie gemäß meiner Ansicht für die Rasteransicht die UI-Sammlungsansicht. Alle anderen Listenansichten verwenden die UITable-Ansicht
quelle
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.
quelle