设置自定义表格视图单元格的背景图像

时间:2010-02-16 07:36:07

标签: iphone cocoa-touch image uitableview

我尝试过多种方法来设置未选中的表格单元格的背景图像,但没有成功:

1- In IB setting the image field
2- cell.contentView.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"list.png"]];
3- cell.imageView.image = [UIImage imageNamed:@"list_selected.png"];

一切似乎都失败了。所选单元格的图像设置有效,但不适用于未选择的单元格。有谁知道这里可能有什么问题?

由于

5 个答案:

答案 0 :(得分:19)

尝试将backgroundView设置为图像的imageView。

Jason Moore的代码示例(TomH更正):

cell.backgroundView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"foo.png"]] autorelease];

答案 1 :(得分:3)

cell.backgroundImage不再存在。而是使用:

cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"foo.png"]];

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewCell_Class/Reference/Reference.html

答案 2 :(得分:2)

我一直在使用以下UITableViewDelegate方法,并设置cell.backgroundColor属性。在屏幕上实际绘制单元格之前,它最后被调用:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row%2)
    cell.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"TableCell-BG-Dark.png"]];
else 
    cell.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"TableCell-BG-Light.png"]];

}

是的,我正在使用UITableViewCell的自定义子类。

答案 3 :(得分:1)

尝试这样做:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:DateCellIdentifier];
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:DateCellIdentifier] autorelease]
            UIImageView* img = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"gradient.png"]];
            [cell setBackgroundView:img];
            [img release];
        } 
        cell.textLabel.text = @"Text";
}

答案 4 :(得分:0)

我在尝试更改单元格的背景颜色方面也遇到了问题,我最后因为不同的原因对单元格进行了子类化,这是我的单元格背景更改代码:

if (indexPath.row % 2 == 0) {
    cell.contentView.backgroundColor = [UIColor colorWithWhite:230.0/255 alpha:1];
} else {
    cell.contentView.backgroundColor = [UIColor colorWithWhite:242.0/255 alpha:1];
}