2013-05-20 39 views
7

Ich habe eine Tabellenansicht mit einer benutzerdefinierten Zelle, die es Inhalt aus einem Array erhält, das alles baut gut. Ich möchte zu diesem Inhalt eine Sammlungsansicht von Thumbnail-Bildern unterschiedlicher Anzahl zu jeder der benutzerdefinierten Tabellenansichtszellen hinzufügen.Einbetten Sammlung in benutzerdefinierten Tabellenansicht Zelle

Ich habe die Sammlung der benutzerdefinierten Zelle im Storyboard hinzugefügt. Ich habe die Sammlung mit der Custom Cell.m verbunden (nicht sicher, dass es dorthin gehen sollte). Ich habe eine Sammlung benutzerdefinierte Zelle erstellt und das Bild in.

Es ist von hier bin ich nicht sicher, sollten die Methoden zum Erstellen der Sammlung Ansicht in der benutzerdefinierten Tabelle Cell.m OR in der View Controller platziert werden .m? Ich habe ein Bild aus dem Storyboard, Sie können die benutzerdefinierte Tabellenzelle sehen und dann (nicht so klar) ist unten eine Collection-Ansicht (horizontales Scrollen), die ich mit Bildern bevölkern möchte - nur nicht sicher wie? Ich bin auch nicht sicher, welche Informationen helfen können, also tut es mir leid, wenn Informationen fehlen.

Picture of Custom Table Cell

+0

Ich habe dies gefunden, aber es ist eine grundlegende Tabelle in einer Tabelle. http://iosstuff.wordpress.com/2011/06/29/adding-a-uitableview-inside-a-uitableviewcell/ und es in Collection-Ansicht (mit benutzerdefinierten Zelle) in einer Tabellenansicht zu übersetzen ist schwierig, obwohl es hilfreich war . Ich frage mich, ob ich nach den falschen Schlüsselwörtern suche? –

+0

[Dieses Tutorial] (http://ashfurrow.com/blog/putting-a-uicollectionview-in-a-uitableviewcell) ist genau das, was Sie suchen. –

Antwort

4

Sie sollten die Delagate und DataSource des UICollectionView innerhalb der benutzerdefinierten UITableViewCell Klasse setzen.

Hier ist ein nice tutorial.

Es geht um Tabellenansicht in einer Tabellenansicht Zelle, aber die Idee ist ziemlich ähnlich.

Viel Glück!

+0

Vielen Dank, ich werde einen Blick darauf werfen. –

+0

Das sieht gut aus. Ich habe am Ende eine Bildlaufansicht hinzugefügt und dann Teilansichten darin platziert und jeder Ansicht eine Geste hinzugefügt. Das funktioniert, aber ich denke, dass dein Weg vielleicht schneller ist ... Ich werde es versuchen und umsetzen, danke. –

2

Hier ist die Lösung für schnelle. Sie müssen eine CollectionView-Datenquelle einrichten und in die TableView-Zelle delegieren, indem Sie die tabellenView-Delegierungsmethode cellForRowAtIndexPath verwenden. Verwenden Sie danach eine Datenquelle summaryview und delegieren Sie in einen viewController, in dem Sie die Tabellenviewer-Datenquelle und -Delegate bestätigt haben. Hier ist der Code für Mainviewcontroller:

extension MainViewController:UITableViewDataSource, UITableViewDelegate { 

// .....do some table view setup like numberOfRowsInSection ...... 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("yourReusecellIdentifier", forIndexPath: indexPath) as! yourCustomCell 

cell.setCollectionViewDataSourceDelegate(self, forRow: indexPath.row) 

return cell 
} 
} 

hier cell.setcollectionViewDataSourceDelegate (self, forRow: indexPath.rom) -Code setzt einen Kollektion Delegierten und Datenquelle in der Tabellendarstellung Zelle nach diesem ziehen, um die Steckdose zu Kollektiontableview Zelle. In der Tableview Zelle ein mehod setcollectionViewDataSourceDelegate hinzufügen Collection Delegierten wie folgt zu setzen:

class yourCustomCell: UITableViewCell { 

//MARK:- Properties 

@IBOutlet weak var collectionView: UICollectionView!  

//MARK:- initialization methods 

override func awakeFromNib() { 
    super.awakeFromNib() 
    setupView() 
} 

override func setSelected(selected: Bool, animated: Bool) { 
    super.setSelected(selected, animated: animated) 

} 

//MARK:- Setup collectionView datasource and delegate 

func setCollectionViewDataSourceDelegate 
    <D: protocol<UICollectionViewDataSource, UICollectionViewDelegate>> 
    (dataSourceDelegate: D, forRow row: Int) { 

    collectionView.delegate = dataSourceDelegate 
    collectionView.dataSource = dataSourceDelegate 
    collectionView.tag = row 
    collectionView.reloadData() 
} 
} 

Nach dieser Verwendung der Sammlung Ansicht Delegatmethode in Sie Controller anzuzeigen:

extension MainViewController: UICollectionViewDelegate, UICollectionViewDataSource { 

func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { 

     return 2 

} 

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 

     return 5 
} 

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 

     let cell = collectionView.dequeueReusableCellWithReuseIdentifier("collectionViewReuseIdentifier", forIndexPath: indexPath) as! YourCollectionViewCustomCell 

     .......cell configure.... 

     return cell 

} 
} 

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 

print("get selected collectionview itemindex \(indexPath.row)") 

} 
} 

Für klare Erklärung Besuch diesen https://ashfurrow.com/blog/putting-a-uicollectionview-in-a-uitableviewcell-in-swift/

Verwandte Themen