如何在UICollectionViewController(Swift)中的方法didSelectItemAtIndexPath()访问所有单元格

时间:2016-08-12 19:24:00

标签: ios swift uicollectionview

如何在didSelectItemAtIndexPath中设置集合视图中任何单元格的值。因此,我希望将所有其他单元格的边框颜色更改为黑色,并期望用户单击该单元格。

谢谢

2 个答案:

答案 0 :(得分:0)

以下代码遍历tableview部分和每个部分的行。它将每行的indexPath与所选单元格的indexPath进行比较,如果它们不匹配,则允许您对单元格执行所需操作。

for (NSInteger i = 0; i < [tableView numberOfSections]; ++i)
{
    for (NSInteger j = 0; j < [tableView numberOfRowsInSection:i]; ++j)
    {
        NSIndexPath *cellIdxPath = [NSIndexPath indexPathForRow:j inSection:i];

        // indexPath represents the currently selected row
        if (indexPath != cellIdxPath)
        {
            UITableViewCell *cell = [tableView cellForRowAtIndexPath:cellIdxPath];
            // do whatever you need to do to the cell
        }
    }
}

答案 1 :(得分:0)

您可以通过保留选择和索引的参考

来实现这一目标
var isSelected:Bool = false;
var index: Int;

并在didSelectItemAtIndexPath中将isselected属性更改为true并将索引路径行值保留在索引中,然后重新加载集合视图

当您填充单元格时添加条件

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

   if(isSelected && indexPath.Row != index )
   {
      // change the color to the black
   }

}