无法获得细胞子视图?

时间:2016-05-29 09:48:04

标签: ios swift uicollectionview

当用户选择一个单元格时,我想获得一个特定的UIViews并改变它的颜色。

所以,

     func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {

               for cell in collectionView.visibleCells() as [UICollectionViewCell]
            {


                     if(cell.tag==indexPath.row)
                     {
                        for view in  [cell.contentView.subviews]  {

                        view.backgroundColor=UIColor.redColor()

      //here what ever I try I can't get it to see view as a UIView and change its properties, instead I get error that [UIView] has no member..

3 个答案:

答案 0 :(得分:0)

这对我有用:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
{
    var selectedCell:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
    selectedCell.contentView.backgroundColor = UIColor.redColor()
}

如果在属性检查器中设置了tableView并选择了多个选择它应该有效。只需将其取消选择取消选择:

override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath)
 {
    var cellToDeSelect:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
    cellToDeSelect.contentView.backgroundColor = colorForCellUnselected 
}

答案 1 :(得分:0)

有一种更简单的方法可以做到这一点。只需获取您感兴趣的单元格,并直接操作它。使用标签是一种脆弱的方法。此外,当你遍历另一个视图的子视图时,你已经在处理一个数组,没有必要将它包装在[] s中

  if let cell = tableView.cellForRowAtIndexPath(indexPath) {
    for view in cell.contentView.subviews {
      view.backgroundColor = UIColor.redColor()
    }
  }

答案 2 :(得分:-1)

您的cell.contentView.subViews位于数组中,因此view将成为一个数组。

像这样松开周围的[]

for view in cell.contentView.subviews  {
      view.backgroundColor=UIColor.redColor()
}