【发布时间】:2016-07-26 13:17:14
【问题描述】:
我有一个包含UICollectionView 的视图控制器。它具有为原型单元指定的重用标识符ValveCell。它使用 UICollectionViewCell 的一个自定义子类,称为 ValveViewCell。
我已经使用情节提要在原型单元格上放置了几个文本标签,我可以让不同的值显示在多个单元格中,这没问题。目前有 4 个单元格,显示来自 4 个不同阀门的信息。
我要做的就是根据阀门是打开还是关闭来更改单元格的背景颜色(我可以成功测试的布尔值)。
我正在使用此代码:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
ValveViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"ValveCell" forIndexPath:indexPath];
Valve *valve = [valveArray objectAtIndex:indexPath.row];
cell.valveID.text = [valve.valveID stringValue];
cell.valveLabel.text = valve.valveLabel;
cell.valveStatus.text = valve.status;
if ([valve isOn]) {
[cell setBackgroundColor:[UIColor greenColor]];
} else {
[cell setBackgroundColor:[UIColor redColor]];
}
return cell;
}
问题在于它确实改变了背景颜色,但它改变了每个单元格的背景颜色,而不仅仅是当前单元格。有任何想法吗?提前致谢!
【问题讨论】:
-
当前单元格是什么意思??是被选中的单元格吗?
-
[cell.contentView setBackgroundColor:[UIColor greenColor]]; -
我的意思是,当它遍历数组中的每个项目时,它应该根据为特定单元格设置的阀门来更改特定 UICollectionViewCell 的颜色。事实证明,实际上它与 UICollectionViewCell 根本无关,它基于逻辑是一个糟糕的值。由于该值实际上总是返回 nil,因此它将每个单元格更改为相同的颜色。
标签: objective-c uicollectionviewcell