更新整数Swift数组

时间:2016-01-30 20:53:45

标签: arrays swift uicollectionview

我有一系列模拟数据,如下所示:

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。我怎么做?感谢

3 个答案:

答案 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 } } 即可检索与所选单元格相关的索引列表。

您的代码就像这样

*