需要更改表视图选择的颜色

时间:2009-09-28 06:22:51

标签: iphone colors tableview

我需要将表格视图的默认蓝色选择更改为某种自定义颜色。有没有办法做到这一点。帮帮我

5 个答案:

答案 0 :(得分:62)

这样做的最佳方式是:

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"myCellId";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        UIView *v = [[[UIView alloc] init] autorelease];
        v.backgroundColor = [UIColor redColor];
        cell.selectedBackgroundView = v;
    }
    // Set up the cell...
    cell.textLabel.text = @"foo";
    return cell;
}

与您相关的部分是 cell.selectedBackgroundView = v; 指令。 您可以使用您喜欢的任何视图替换非常基本的视图“v”。

答案 1 :(得分:6)

我还尝试为分组的单元格创建自定义选定的单元格视图时遇到此问题。我通过为单元格顶部,中间和底部创建3种类型的图像来解决这个问题,假设将有一个中间单元格。

NSString *imageFile;

if (row == 0) {
 imageFile = @"highlighted_cell_top.png";
} else if (row == ([registeredDetailsKeys count] - 1)) {
 imageFile = @"highlighted_cell_bottom.png";
} else {
 imageFile = @"highlighted_cell_middle.png";
}

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:imageFile]];

cell.selectedBackgroundView = imageView;

可能有一种更简单的方法,但我对结果感到满意。

答案 2 :(得分:3)

我认为你不能使用自定义颜色。但是,您可以使用UITableViewCell的以下属性

@property(nonatomic) UITableViewCellSelectionStyle selectionStyle

选择样式是一个backgroundView常量,用于确定选中单元格时的颜色。默认值为UITableViewCellSelectionStyleBlue。由于

typedef enum {
   UITableViewCellSelectionStyleNone,
   UITableViewCellSelectionStyleBlue,
   UITableViewCellSelectionStyleGray
} UITableViewCellSelectionStyle;

您可以从默认的蓝色切换为灰色,或者根本没有彩色选择。

答案 3 :(得分:3)

确保在标题中声明后

@property(nonatomic) UITableViewCellSelectionStyle selectionStyle

实施

cell.selectionStyle = UITableViewCellSelectionStyleGray

其中UITableViewCellSelectionStyleGray可以是UITableViewCellSelectionStyleNoneUITableViewCellSelectionStyleBlueUITableViewCellSelectionStyleGray

答案 4 :(得分:0)

另一种方法是使用您想要的任何颜色和50%左右的不透明度移动您的单元格的新视图。当您获得-setSelected:animated:call时,将此视图移动到单元格。当我说移动时,你实际上总是可以在你的单元格顶部看到一个视图,但只需根据需要关闭和打开隐藏位。