Oto rozwiązanie dla szybkiego. należy skonfigurować źródło danych widoku kolekcjonowania i przekazać je do komórki widoku tabeli, używając metody delegowania tableView cellForRowAtIndexPath, po tym użyciu należy użyć źródła danych kolekcjiview i przekazać metodę do kontrolera viewController, w którym potwierdzono źródło danych tableveiew i przekazano. Oto kod 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
}
}
tutaj cell.setcollectionViewDataSourceDelegate (samodzielne forRow: indexPath.rom) kod określa pełnomocnika CollectionView i źródła danych do widoku tabeli komórki po tym oporu wylot CollectionView do komórki Tableview. Do komórki tableview dodać mehod setcollectionViewDataSourceDelegate ustawić CollectionView delegata następujące:
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()
}
}
Po tym zastosować metodę widok delegat kolekcja na przeglądanie Kontroler:
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)")
}
}
Dla jasne wyjaśnienie odwiedzić ten https://ashfurrow.com/blog/putting-a-uicollectionview-in-a-uitableviewcell-in-swift/
Znalazłem to, ale jest to podstawowa tabela w tabeli. http://iosstuff.wordpress.com/2011/06/29/adding-a-uitableview-inside-a-uitableviewcell/ i przetłumaczenie go na widok kolekcji (z niestandardową komórką) w widoku tabeli jest trudne, chociaż było pomocne . Zastanawiam się, czy szukam niewłaściwych słów kluczowych? –
[Ten samouczek] (http://ashfurrow.com/blog/putting-a-uicollectionview-in-a-uitableviewcell) jest dokładnie tym, czego szukasz. –