我有一个包含多个部分的集合视图。集合视图数据源是
dataSource = [Section]
每个部分的数据成员如下
Section = {id, [arr1], [arr2]}
此处, id 被指定为部分标题标签。目前,我能够为 arr1 和 arr2 中的所有项生成和插入单元格。但它们不断插入该部分。我希望能够在新行上从 arr2 中插入单元格,即使在插入 arr1 中的最后一项后仍有空间。我的视图控制器子类 UICollectionViewDataSource , UICollectionViewDelegate , UICollectionViewDelegateFlowLayout 。实现这一目标最优雅,最灵活的方式是什么?我错过了什么吗?
以下是我在collectionview(cellForItemAt :)中的内容。 资源是 arr1 , ResourceDesktops 是 arr2 。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if indexPath.item < sections[indexPath.section].resources.count {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: resourceReuseIdentifier, for: indexPath) as! FeedsViewCell
if #available(iOS 11.0, *) {
cell.imageView.accessibilityIgnoresInvertColors = true
}
cell.image = UIImage(named: sections[indexPath.section].resources[indexPath.item].imageName)
cell.resourceLabel.text = sections[indexPath.section].resources[indexPath.item].resourceName
cell.resourceLabel.sizeToFit()
var labelFrame = cell.resourceLabel.frame
labelFrame = CGRect(x: labelFrame.origin.x, y: labelFrame.origin.y, width: labelWidth, height: labelFrame.height)
cell.resourceLabel.frame = labelFrame
return cell
} else {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: resourceDesktopReuseIdentifier, for: indexPath) as! ResourceDesktopViewCell
if #available(iOS 11.0, *) {
cell.imageView.accessibilityIgnoresInvertColors = true
}
cell.resourceLabel.text = sections[indexPath.section].resourceDesktops[indexPath.item - sections[indexPath.section].resources.count].resourceName
cell.resourceLabel.sizeToFit()
var labelFrame = cell.resourceLabel.frame
labelFrame = CGRect(x: labelFrame.origin.x, y: labelFrame.origin.y, width: labelWidth, height: labelFrame.height)
cell.resourceLabel.frame = labelFrame
return cell
}
}
答案 0 :(得分:0)
您可以使用UITableView
代替UICollectionView
来获取整个数据
详细信息,您可以在UICollectionViews
的每个单元格中使用2个UITableView
和一个标签