我尝试做的是当我点击单元格中的按钮时,该单元格中的按钮变得不可见。问题是,当我点击按钮时,它变得不可见,但是当我滚动集合视图时,隐藏按钮会从一个按钮转到另一个按钮。例如,我点击它隐藏的第二个,但是当我滚动时,我看到第7个被隐藏了。每次我滚动隐藏按钮改变。
这是我写的代码:
onError={(err) => console.log(err)}
答案 0 :(得分:1)
细胞被重复使用。您需要跟踪已点击的单元格,以便在cellForItemAt
方法中设置正确的按钮状态。
在您的班级中声明一个属性:
var beenTapped: Set<Int> = []
然后在btnColectionviewCellTapped
添加:
beenTapped.insert(sender.tag)
在cellForItemAt
你需要:
cell.btnKharid.isHidden = beenTapped.contains(indexPath.item)
您还应该将indexPath.row
替换为indexPath.item
。 row
用于表格视图。 item
用于收集视图。
答案 1 :(得分:0)
这是UICollectionView(或UITableView)的一种常见误用。在处理它们时,你应该始终牢记一件事,重新使用。在需要时,os将高度重用集合/ tableview单元格。您的代码中的问题原因是,您假设单元格中的一个属性的一次设置将是持久性,这是错误的。该单元来自出队方法,可以始终是新单元或现有单元,因此,任何配置应该应用于单元应该再次配置。以这种方式思考,单元格中的所有视图都是&#34;脏&#34;当它从集合视图中获取它时,您应该在返回之前设置所需的属性(或者具有稍后设置它的机制)。因此,在您的情况下,每次在cellForRow委托中准备单元格时,只需设置isHidden属性。