我试图让应用程序选择多个单元格,所以让我们假设我们有9个单元格从0到8进行索引。
这是我想要做的......
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
var cell = collectionView.cellForItemAtIndexPath(indexPath)
if cell?.selected == true {
cell?.backgroundColor = UIColor.orangeColor()
}
}
取消选择Func()
func collectionView(collectionView: UICollectionView, didDeselectItemAtIndexPath indexPath: NSIndexPath) {
var cell = collectionView.cellForItemAtIndexPath(indexPath)
cell?.backgroundColor = UIColor.clearColor()
}
如果用户选择一个单元格,那么它很简单 - >如果取消选择单元格,则为橙色 - > clearColor' white' 所以这个代码正在工作,除了
如果用户选择单元格0,它也会更改单元格6的颜色,"请记住单元格6未被选中它只是改变它的外观"。如果单元格1选择了单元格7更改等,则单元格1也相同,如果我取消选择单元格0或单元格6两个更改。
所以我尝试了cell?.selected == true
,UICollectionView.allowsMultipleSelection = true
两个属性都不适合我。
答案 0 :(得分:5)
这样做:
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
{
var cell = collectionView.cellForItemAtIndexPath(indexPath)
if cell?.selected == true {
cell?.backgroundColor = UIColor.orangeColor()
}
else
cell?.backgroundColor = UIColor.clearColor()
}
还为UICollectionViewCell创建自定义单元格。同时更改cellForItemAtIndexPath
功能:
if cell?.selected == true
cell?.backgroundColor = UIColor.orangeColor()
else
cell?.backgroundColor = UIColor.clearColor()
答案 1 :(得分:1)
第一组collectionView.allowsMultipleSelection
然后例如点击更改边框:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let selectedCell : UICollectionViewCell = collectionView.cellForItem(at: indexPath)!
selectedCell.layer.borderWidth = 2
}
func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
let unselectedCell : UICollectionViewCell = collectionView.cellForItem(at: indexPath)!
unselectedCell.layer.borderWidth = 0
}