我对实施有疑问。
我的用户可以从下拉列表中选择他们想要在集合视图中看到的内容。根据选择,数据集和可能的部分/单元格类型将发生变化。
我是否应该注册所有单元格的一个UICollectionView并根据用户选择修改我的cellForItemAt
?
或者我应该选择UICollectionView
,然后根据选择交换它们?
什么是最好,更专业的实施?
答案 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
}