У меня есть UITableView
, одна из ячеек содержит UICollectionView
. Тогда каждая ячейка UICollectionView
также содержит UITableView
. Чтобы сделать это более понятным:
При первой прокрутке к этой ячейке ничего не загружается, высота ячейки просто равна 0. Когда я продолжаю прокручивать внешний UITableView, пока эта конкретная ячейка не исчезнет с экрана (уничтожена) и вернусь туда, данные затем загружаются. Вот упрощенный фрагмент кода:
class ViewController: UIViewController {
@IBOutlet weak var outerTableView: UITableView!
func tableView(..., cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.row == ... {
// return regularCells
}
let cellThatHasCollectionView: CustomTableViewCell = ...
cellThatHasCollectionView.sectionData = ... // An array of array
return cellThatHasCollectionView
}
}
Специальное UITableViewCell
определяется следующим образом:
private class CustomTableViewCell: UITableViewCell {
private let someCollectionView: UICollectionView = ...
public var sectionData: [[SomeType]] = []
init(...) {
...
someCollectionView.delegate = self
someCollectionView.dataSource = self
}
func collectionView(..., numberOfItemsInSection section: Int) -> Int {
return sectionData.count
}
func collectionView(..., cellForItemAt indexPath: IndexPath) -> ... {
let cell: CustomCollectionViewCell = ...
cell.items = sectionData[indexPath.row]
return cell
}
}
Наконец, у меня есть этот внутренний UITableView
, определенный следующим образом:
private class CustomCollectionViewCell: UICollectionViewCell {
public var items: [SomeType] = []
private let innerTableView: UITableView = ...
init(...) {
...
innerTableView.delegate = self
innerTableView.dataSource = self
}
func tableView(..., numberOfItemsInSection section) -> Int {
return items.count
}
...
}
Как мне решить эту проблему? :)