我想更改UITableView单元格的颜色。我有这个代码,但它不起作用。有人可以向我解释为什么以及我应该改变什么?
[_myTableView cellForRowAtIndexPath : [NSIndexPath indexPathForItem:myIndexAsInt inSection:0]].contentView.backgroundColor = [UIColor greenColor];
答案 0 :(得分:1)
要更改标准UITableViewCell
的颜色,您需要通过覆盖UITableViewDelegate
方法tableView:willDispayCell:forRowAtIndexPath:
来完成此操作:
- (void)tableView:(UITableView *)tableView willDispayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
cell.contentView.backgroundColor = color;
}
如果您的单元格包含自定义内容,您可能希望实现略有不同。
答案 1 :(得分:0)
设置第3个单元格
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
if (indexPath.row == 2)
{
cell.contentView.backgroundColor = [UIColor redColor];
}
return cell;
}
答案 2 :(得分:0)
代码行本身是合法的。
有些事情无法从我这边验证。请在该行上设置一个断点并运行它。
0)通过在那里放置一个断点,并看到系统停在那里,你实际上检查该行是否已执行。
1)如果步骤0没问题,请检查您是否确实有一个表视图实例(它必须不是nil,如果您使用的是nib,则忘记创建IBoutlet)。
2)确保tableView具有适当的委托和数据源。 (通常是ViewController,你提到的那些东西都被处理了......)
3)检查您是否为myIndexAsInt参数传递了正确的类型和正确的值。它应该是NSInteger类型,应该等于2.
4)如果以上所有3都没问题,也许你是从错误的地方打电话。
让我们知道它是怎么回事。
答案 3 :(得分:0)
您可以使用变量来保存索引位置。因此,在调用 didSelectRowAtIndexPath 委托后,只需在该变量中设置索引位置并重新加载表。使用 cellForRowAtIndexPath 数据源方法中的条件检查索引位置,现在设置该特定单元格的背景颜色。
.h 文件中的:
NSInteger indexPos;
didSelectRowAtIndexPath 委托中的:
indexPos = indexPath.row;
cellForRowAtIndexPath :中的
if (indexPath.row == indexPos) {
cell.backgroundColor = [UIColor colorWithRed:255/255.0f green:255/255.0f blue:255/255.0f alpha:1.0f];
} else {
cell.backgroundColor = [UIColor colorWithRed:0/255.0f green:0/255.0f blue:0/255.0f alpha:1.0f];
}