我有一系列模拟数据,如下所示:
var demoInit = [("name", "amount", "place"), ("name", "amount", "place"), ("name", "amount", "place")]
我在集合视图中使用它,我希望我的用户不要选择超过三个,我做了:
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
let selectedCell = collectionView.dequeueReusableCellWithReuseIdentifier("interestAsset", forIndexPath: indexPath) as! InterestCell
if selectedItems.count < 3 {
selectedItems += [indexPath.row]
selectedCell.holderView.alpha = 0.5
selectedCell.holderView.backgroundColor = UIColor.greenColor()
selectedCell.checkMark.hidden = false
}
}
如果您发现此行selectedItems += [indexPath.row]
是我存储indexPath
的所选UICollectionView
的地方。但是我遇到的问题是这个,我想实现取消选择,但要实现它,我需要从indexPath
数组中删除该特定存储的selectedItems
。我怎么做?感谢
答案 0 :(得分:0)
如果你想要实现它,请使用它:
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
let selectedCell = collectionView.dequeueReusableCellWithReuseIdentifier("interestAsset", forIndexPath: indexPath) as! InterestCell
if selectedItems.count < 3 {
selectedItems += [indexPath.row]
selectedCell.holderView.alpha = 0.5
selectedCell.holderView.backgroundColor = UIColor.greenColor()
selectedCell.checkMark.hidden = false
}
for (var index = 0; index < 3; ++index) {
if(selectedItems[index] == indexPath.row)
{
selectedItems.removeAtIndex(index)
}
}
}
说明:
您正在使用for循环来遍历您选择的3个项目。如果其中一个等于你的indexPath,那么它就会跳进你的if函数。 在if函数内部,只需删除selectedItem形式的selectedItems。
如果有效,请写信给我......
答案 1 :(得分:0)
您可以使用Array.removeAtIndex
方法从数组中删除。
示例:
var intArray = [1,5,6,8,10]
//Remove 10
intArray.removeAtIndex(intArray.indexOf(10))
print("\(intArray)") // [1,5,6,8]
答案 2 :(得分:0)
无需在collectionView.indexPathsForSelectedItems()
中手动跟踪所选单元格。
只需调用func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
let selectedCell = collectionView.dequeueReusableCellWithReuseIdentifier("interestAsset", forIndexPath: indexPath) as! InterestCell
let selectedItems = collectionView.indexPathsForSelectedItems()?.count ?? 0
if selectedItems < 3 {
selectedCell.holderView.alpha = 0.5
selectedCell.holderView.backgroundColor = UIColor.greenColor()
selectedCell.checkMark.hidden = false
}
}
即可检索与所选单元格相关的索引列表。
您的代码就像这样
*