更改一个collectionview单元格的对象

时间:2018-04-28 15:38:13

标签: ios swift uicollectionview

我尝试做的是当我点击单元格中的按钮时,该单元格中的按钮变得不可见。问题是,当我点击按钮时,它变得不可见,但是当我滚动集合视图时,隐藏按钮会从一个按钮转到另一个按钮。例如,我点击它隐藏的第二个,但是当我滚动时,我看到第7个被隐藏了。每次我滚动隐藏按钮改变。

这是我写的代码:

onError={(err) => console.log(err)}

enter image description here

2 个答案:

答案 0 :(得分:1)

细胞被重复使用。您需要跟踪已点击的单元格,以便在cellForItemAt方法中设置正确的按钮状态。

在您的班级中声明一个属性:

var beenTapped: Set<Int> = []

然后在btnColectionviewCellTapped添加:

beenTapped.insert(sender.tag)

cellForItemAt你需要:

cell.btnKharid.isHidden = beenTapped.contains(indexPath.item)

您还应该将indexPath.row替换为indexPath.itemrow用于表格视图。 item用于收集视图。

答案 1 :(得分:0)

这是UICollectionView(或UITableView)的一种常见误用。在处理它们时,你应该始终牢记一件事,重新使用。在需要时,os将高度重用集合/ tableview单元格。您的代码中的问题原因是,您假设单元格中的一个属性的一次设置将是持久性,这是错误的。该单元来自出队方法,可以始终是新单元或现有单元,因此,任何配置应该应用于单元应该再次配置。以这种方式思考,单元格中的所有视图都是&#34;脏&#34;当它从集合视图中获取它时,您应该在返回之前设置所需的属性(或者具有稍后设置它的机制)。因此,在您的情况下,每次在cellForRow委托中准备单元格时,只需设置isHidden属性。