2013-03-04 13 views
9

Die Sammlungsansicht besteht aus einer einzelnen Reihe von horizontal ausgerichteten Zellen, deren Größe die gleiche Größe wie die Grenzen der Sammlungsansicht hat. Einzelzellen füllen den gesamten Bildschirm.UITableView innerhalb von UICollectionView-Berührungen.

Das Problem ist, dass die Sammlungsansicht scheint, alle Pfannen abzufangen. Wie kann ich sie an den Tisch weiterleiten, damit ich auch vertikal in den Tisch blättern kann?

Ich möchte vertikale Pfanne an den Tisch in der Zelle geliefert werden, so dass es nach oben und unten scrollen kann. Ich möchte, dass die horizontale Schwenktabelle in der Sammlungsansicht angezeigt wird, sodass sie horizontal gescrollt werden kann.

Irgendwelche Ideen? Vielen Dank.

+0

Verwenden Sie storyBoard, versuchen Sie, tableView in collectionViewCell.collectionView als Unteransicht von self einzufügen.view –

+0

Sammlungsansicht ist bereits eine Unteransicht einer Ansicht. Die Tabellenansicht wurde in die Prototyp-Zelle einer Sammlungsansicht eingefügt, also zur Laufzeit in, cell.contentView. Taps werden an den Tisch geliefert, ich kann sehen, wie die Zellen ausgewählt werden. – foFox

+0

Ja, ziehen Sie tableView in das Zellenquadrat (cell.contenView). Zeigen Sie etwas Code. –

Antwort

14

Für UITableView innerhalb Collectionstoryboard verwenden, gehen Sie wie folgt vor:

-Drag Collection zu UIViewController, Drag-Datenquelle UIViewController (do Delegat nicht ziehen). Fügen Sie innerhalb von ViewController.m Datenquellenmethoden hinzu.

-Create Cell: CollectionViewCell-Klasse. Wählen Sie die Klasse für Zelle in storyBoard to Cell-Klasse aus, geben Sie die Wiederverwendungs-ID an.

-Drag tableView innerhalb der AuflistungCell Quadrat. Delegieren Sie, ziehen Sie die Datenquelle auf den CollecionCell Square. Fügen Sie tableView Datenquelle, delegieren Sie innerhalb Cell.m hinzu

-Create CellDelegate, wenn Sie innerhalb TableViewDidSelect implementieren. Übertragen Sie diese Delegierten UIViewController andere Aktion

Beispielcode auszuführen: https://github.com/lequysang/github_zip/blob/master/TableViewInCollection.zip

+0

Also ja, das funktioniert, ich habe vergessen zu erwähnen, ich benutze benutzerdefinierte Layout, die eine Unterklasse von UICollectionViewFlowLayout ist. Es scheint die Wurzel aller Probleme zu sein. – foFox

+1

Vergessen zu hinzufügen: Vielen Dank. – foFox

+0

Hallo In den Code, wenn ich die Anzahl der Zelle in der Sammlungsansicht erhöhen. In der dritten Zelle der Sammlungsansicht wird die erste Tabellenansicht angezeigt, nicht die dritte. Wie man es löst? – souvickcse

2

Swift2 Update - Wir brauchen nicht alle oben genannten Schritte zu tun. Wenn Sie den Controller zum Delegaten und zur Datenquelle der Tabellenansicht und der Sammlungsansicht machen, funktioniert das problemlos.

0

Ich konnte das ohne Storyboards machen - obwohl ich XIBs für meine Ansichten verwende, aber nur um die Regeln für das automatische Layout hinzuzufügen. Alle Anpassungen (Farben, Schriftarten, Etiketten usw.) sind im Code festgelegt. In jedem Fall sollte dies auch für Zellen funktionieren, die programmatisch erstellt werden.

Wie es tun:

  • Das Wichtigste ist zu erinnern, Ihre benutzerdefinierte Ansicht auf die contentView Eigenschaft der und nicht innerhalb der Zelle selbst Zelle hinzuzufügen. Wenn Sie XIBs für die benutzerdefinierte UICollectionViewCell verwenden, lassen Sie es leer. Instanziieren Sie Ihre benutzerdefinierte Ansicht (wo sich die UITableView befindet), und fügen Sie sie dann als Unteransicht der UICollectionViewCellcontentView hinzu. Wenn Sie die Tabelle vie direkt in der Sammlungsansichtszelle hinzufügen, wird die Tabellenansicht nicht vertikal scrollen.

  • Implementieren shouldSelectItemAtIndexPath und shouldHighlightItemAtIndexPath der UICollectionViewDelegate und beide false machen zurückkehren, so dass auf der Sammlung Sichtzelle schneidend mit Armaturen für die Tabellenansicht innen bestimmt nicht abfangen.

Fertig mit Xcode 7.3 für iOS 9+.

+0

können Sie Ihre Demo teilen? – Jason

Verwandte Themen