当用户选择一个单元格时,我想获得一个特定的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..
答案 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()
}