Ecco la soluzione per swift. è necessario impostare un'origine dati vista raccolta e delegare nella cella tableview utilizzando il metodo di delega tableView cellForRowAtIndexPath, dopo di ciò utilizzare un metodo dataview e un metodo delegate in un viewController in cui è stata confermata l'origine dati tableveiew e delegato. Ecco il codice per 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
}
}
qui cell.setcollectionViewDataSourceDelegate (self, forRow: indexPath.rom) codice imposta un delegato CollectionView e origine dati nella cella vista tabella dopo questa trascina presa CollectionView alla cella Tableview. Nella cella tableView aggiungere un setcollectionViewDataSourceDelegate mehod per impostare CollectionView delegato come segue:
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()
}
}
Dopo questo uso il metodo di visualizzazione delegato di raccolta in voi View Controller:
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)")
}
}
Per chiara spiegazione visita questa https://ashfurrow.com/blog/putting-a-uicollectionview-in-a-uitableviewcell-in-swift/
fonte
2016-08-05 17:39:35
Ho trovato questo, ma è una tabella di base all'interno di un tavolo. http://iosstuff.wordpress.com/2011/06/29/adding-a-uitableview-inside-a-uitableviewcell/ e la sua traduzione in Vista raccolta (con cella personalizzata) all'interno di una vista tabella è difficile anche se è stato utile . Mi chiedo se sto cercando le parole chiave sbagliate? –
[questo tutorial] (http://ashfurrow.com/blog/putting-a-uicollectionview-in-a-uitableviewcell) è esattamente quello che stai cercando. –