Как передать данные в UICollectionView, встроенные в TableViewCell (xCode – iOS – Swift 3)

Я реализовал CollectionView в TableViewCell, но мне нужно читать динамические данные для набора ячеек в CollectionView.

Я могу читать данные о расширении из класса TableViewCell, возможно, может помочь мне передать данные из ViewController в класс TableViewCell.

class MultipleTableViewCell: UITableViewCell { @IBOutlet fileprivate weak var collectionView: UICollectionView! } extension MultipleTableViewCell : UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return 3 // array.count } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "foodCell", for: indexPath) as! UserCollectionViewCell let dict = array.object(at: indexPath.row) as! NSDictionary //Like this cell.name.text = "How do you read data from ViewController" cell.email.text = "How do you read data from ViewController" cell.phone.text = dict["phone"] as? String //Like this cell.image.image = "How do you read data from ViewController" return cell } } extension MultipleFoodTableViewCell : UICollectionViewDelegateFlowLayout { func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { let itemsPerRow:CGFloat = 1 let hardCodedPadding:CGFloat = 20 let itemWidth = (collectionView.bounds.width / itemsPerRow) - hardCodedPadding let itemHeight = collectionView.bounds.height - (2 * hardCodedPadding) return CGSize(width: itemWidth, height: itemHeight) } } 

Самый простой способ – создать один метод внутри вашего MultipleTableViewCell с массивом данных, который вы хотите заполнить CollectionView . Теперь вызовите этот метод в методе cellForRowAt TableView .

 class MultipleTableViewCell: UITableViewCell { @IBOutlet fileprivate weak var collectionView: UICollectionView! var array = [String]() //Change with Your array type func fillCollectionView(with array: [String]) { self.array = array self.collectionView.reloadData() } } 

Теперь вызовите этот метод в cellForRowAt и передайте массив данных для collectionView .

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell let cell = tableView.dequeueReusableCell(withIdentifier: "CellIdentifier") as! MultipleTableViewCell cell.fillCollectionView(with: ["A","B","C"]) //Pass your array return cell } 
Interesting Posts
Давайте будем гением компьютера.