Представление коллекции в представлении таблицы - PullRequest
1 голос
/ 29 мая 2019

У меня следующая проблема.В моем проекте у меня есть табличное представление с несколькими разделами и одной строкой в ​​каждом разделе.Внутри строки у меня есть представление коллекции.Количество элементов представления коллекции зависит от раздела, в котором находится коллекция. Но я не понимаю, как получить доступ к номеру раздела, когда я вызываю func numberOfItemsInSection для представления коллекции.

Вот мой код:

ViewController.swift

func numberOfSections(in tableView: UITableView) -> Int { 
return data.count
}

TableCell.swift

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    //TODO ?????? How can i get here section of table view
}

Спасибо!

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Здесь вы можете использовать объектно-ориентированный подход, в ячейке вашего табличного представления создайте переменную tableSectionNumber.Как и

class YourCell: UITableViewCell {
    public var tableViewSectionNumber: Int = 0;
....

Теперь здесь, в методе collectionView numberOfItemsInSection, вы можете получить к нему доступ

 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
//TODO ?????? How can i get here section of table view
  self.tableViewSectionNumber // its here
 }

Теперь вы можете установить это значение в ячейке вашего ViewController, когда вы заполняетеячейка в методе TableView cellForRowItem, как

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! YourCell
    cell.tableViewSectionNumber = indexPath.section // here you set the section number in cell
}
0 голосов
/ 29 мая 2019

Создание массива в подклассе UITableViewCell и использование этого массива в методах источника данных collectionview

class CustomCell: UITableViewCell, UICollectionViewDelegate, UICollectionViewDataSource {
    let collectionView = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout())
    var collectionData = [String]()

    func numberOfSections(in collectionView: UICollectionView) -> Int {
        return 1
    }
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return collectionData.count
    }
}

В tableView cellForRowAt метод присваивает значение массиву и перезагружает представление сбора данных

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell") as? CustomCell
    cell?.collectionData = []//assign data here based on indexPath.section
    cell?.collectionView.reloadData()
    return cell!
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...