24

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

4

5 回答 5

61

最好的方法是这样的:

// 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”。

于 2009-09-28T09:34:33.213 回答
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;

可能有更简单的方法,但我对结果很满意。

于 2010-11-25T10:57:41.903 回答
3

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

@property(nonatomic) UITableViewCellSelectionStyle selectionStyle

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

typedef enum {
   UITableViewCellSelectionStyleNone,
   UITableViewCellSelectionStyleBlue,
   UITableViewCellSelectionStyleGray
} UITableViewCellSelectionStyle;

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

于 2009-09-28T06:56:34.460 回答
3

确保在标题中声明后

@property(nonatomic) UITableViewCellSelectionStyle selectionStyle

实施

cell.selectionStyle = UITableViewCellSelectionStyleGray

哪里UITableViewCellSelectionStyleGray可以UITableViewCellSelectionStyleNone, UITableViewCellSelectionStyleBlue, UITableViewCellSelectionStyleGray.

于 2011-02-10T10:52:03.437 回答
0

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

于 2009-09-28T07:14:24.907 回答