我已经实现了一个类似于Appstore / Netflix的UI,其中有一个UITableView,并且在每个(自定义)单元中都有一个UICollectionView水平滚动。
每个UITableView单元用作其collectionView的委托和数据源。数据由tableView单元格内的变量保存,该变量是在tableView的cellForRow调用期间设置的。
设置新变量后,didSet会执行一些操作并调用collectionView.ReloadData(),以便collectionView反映当前数据。这可能导致滚动时出现延迟,这可能是由于每个collectionView.ReloadData()调用所致。
数据是带有一些元数据的结构,内容本身位于数组中。
cellForRow:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: contentTableCellId, for: indexPath) as! ContentTableCell
cell.contentItem = contentItems[indexPath.row]
return cell
}
以及ContentTableCell内:
var contentItem: ContentItem!{
didSet{
... //some simple text label actions.
self.collectionView.reloadData()
}
}