一个UIViewController中的多个UICollectionView数据源

问题描述 投票:0回答:1

我对实施有疑问。

我的用户将能够从下拉列表中选择他们想要在集合视图中看到的内容。根据选择,数据集和可能的部分/单元格类型将发生变化。

我应该有一个UICollectionView注册所有单元格,并根据用户选择修改我的cellForItemAt

或者我应该选择UICollectionView然后根据选择交换它们?

什么是最好,更专业的实施?

swift uicollectionview
1个回答
0
投票

如果显示的单元格本质上相似(它们具有相同的数据结构,即图片,文本,描述,名称等),那么您应该使用一个可重复使用的单元格。

拥有一个单元格可以使您的代码更清晰。然后,您还可以在单​​元格内设置可使用数据设置的可观察属性。将数据传递给单元格,然后在单元格类中,它将负责布局代码。

let cell = someDequeuedCell
cell.data = somedata
return cell

然后在细胞类里面,

var data: SomeData? {
    didSet {
        //Determine data and layout cell
        if data == 'apple' {
           //Layout apple cell
        } else if data == 'orange' {
           //Layout orange cell
        } else {
           //Layout other cell
        }
    }
}

这种方法非常常用,但是如果每个单元的变化不仅仅是改变的数据。您应该为每种数据类型注册多个不同的单元格。

在collectionView里面

if dataType == "apple" {
    let cell = appleCell
    cell.data = someData
    return cell
} else if dataType == "orange" {
    let cell = orangeCell
    cell.data = someData
    return cell
} else {
    let cell = otherCell
    cell.data = someData
    return cell
}
© www.soinside.com 2019 - 2024. All rights reserved.