我有这个集合视图,数组显示为菜单:(我一直在搜索所有Stack Overflow,但没有一个答案适合我)
//what cell to be displyed when and if
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = optionsCollectionView.dequeueReusableCell(withReuseIdentifier: cellID, for: indexPath) as! OptionsCell
let optionsForCell = self.options[indexPath.item]
cell.option = optionsForCell
if Auth.auth().currentUser?.uid != cellUserIDa {
if optionsForCell.optionName == "Edit Comment" {
cell.isHidden = true
options.remove(at: 0)
print(optionsForCell)
} else if optionsForCell.optionName == "Delete Comment" {
cell.isHidden = true
print(optionsForCell)
}
}
阵列:
var options : [Options] = {
return [Options(optionName: "Edit Comment", optionImage: "edit2"),
Options(optionName: "Delete Comment", optionImage: "trash"),
Options(optionName: "Flag as Inappropriate", optionImage: "view"),
Options(optionName: "Cancel", optionImage: "cancel")]
}()
如何从collectionView中删除此数组中的一个项目?我主动想删除单元格,所以如果有更好的方法可以做到吗?
答案 0 :(得分:0)
因此,正如所讨论的,您有两种情况 1)访客菜单 2)用户菜单
由于数据是静态的而不是动态的并且保持简单。让我们分别命名两个数组: -
var visitors =["Daily", "Monthly", "Yearly"]
var users = ["Daily", "Monthly", "Quarterly", "Yearly"]
从您的代码我可以看出,您正在通过身份验证来检查此人是否真的是用户或访问者,在填充集合视图单元格时使用相同的逻辑。这将使您免于从数组中删除和添加两种不同类型的人的麻烦。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = optionsCollectionView.dequeueReusableCell(withReuseIdentifier: cellID, for: indexPath) as! OptionsCell
if Auth.auth().currentUser?.uid != cellUserIDa {
// visitor, do the visitor stuff
cell.optionLabel.text = visitors[indexPath.row]
}
else {
// user, do the usr stuff
cell.optionLabel.text = users[indexPath.row]
}
}
对于collectionView的其他两个委托函数也是如此。如果此人未经过身份验证,则返回访问者的计数,否则返回用户的计数。通过不删除和隐藏不需要的单元格,这将为您节省大量时间。
答案 1 :(得分:0)
您可以通过提供要删除的项目的索引来删除数组中的项目,例如。 animals.remove(at:2) 当项目被删除时,只需重新加载collectionView 例如collectionView.reload()
由于
答案 2 :(得分:0)
根据您的要求,这是最好的示例代码。首先,您需要根据用户设置选项,演示为您提供更清晰的想法。
https://www.dropbox.com/s/xh4pxtghy8696nj/DemoCollectionView.zip?dl=0