一个UIViewController

时间:2018-02-20 16:42:00

标签: swift uicollectionview

我对实施有疑问。

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

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

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

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

1 个答案:

答案 0 :(得分: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
}