Получение indexPath tableView внутри файла tableViewCell во время создания / удаления очереди ячеек - PullRequest
0 голосов
/ 29 мая 2019

Я создаю прокручиваемое представление, заполненное ежемесячными календарями.Я использую представление коллекции для отображения календаря внутри таблицы, полной календарей.Таким образом, каждая ячейка табличного представления - это календарь на определенный месяц, а каждая ячейка табличного представления - день.У меня есть отдельный файл swift для ячейки таблицы из контроллера представления.Поскольку каждая ячейка табличного представления будет выглядеть по-разному (потому что разные месяцы), ячейка табличного представления должна знать, в какую строку она помещена внутри табличного представления при ее создании в функции ячейки dequeque.

tableView.dequeueReusableCell(withIdentifier: "CalendarTableViewCell", for: indexPath)

Мне нужнополучите indexPath в параметре «for: indexPath» внутри файла ячейки табличного представления, поскольку представление коллекции внутри ячейки табличного представления создается при снятии очереди с ячейки табличного представления.Содержимое представления коллекции зависит от того, в какой строке табличного представления он находится. Итак, как мне получить этот параметр?

Извините за длинное объяснение, пожалуйста, помогите, если это возможно.Спасибо!

1 Ответ

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

Создайте массив в подклассе UITableViewCell и используйте этот массив в методах источника данных представления коллекции.

class MonthCell: UITableViewCell, UICollectionViewDelegate, UICollectionViewDataSource {
    let collectionView = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout())
    let datesArray = [String]()
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return datesArray.count
    }
}

В методе tableView cellForRowAt назначьте значения даты и перезагрузите collectionView

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell") as! MonthCell
    cell.datesArray = []//dates based on indexPath
    cell.collectionView.reloadData()
    return cell
}

Или

Назначьте ссылку на табличное представлениепуть индекса ячейки в tableView cellForRowAt метод

class MonthCell: UITableViewCell, UICollectionViewDelegate, UICollectionViewDataSource {
    let collectionView = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout())
    var tableIndexPath:IndexPath?
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        if let tableIndexPath {
            // return value based on tableIndexPath
        } else {
            return 0
        }
    }
}

// cellForRowAt

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "MonthCell") as! MonthCell
    cell.tableIndexPath = indexPath
    cell.collectionView.reloadData()
    return cell
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...