Необходимо изменить цвет выделения в виде таблицы

StackOverflow https://stackoverflow.com/questions/1485678

  •  18-09-2019
  •  | 
  •  

Вопрос

Мне нужно изменить выбор синего цвета по умолчанию в табличном представлении на какой-нибудь пользовательский цвет.Есть ли какой-нибудь способ сделать это?Помоги мне

Это было полезно?

Решение

Лучший способ сделать это вот так:

// 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" здесь любым видом, который вам нравится.

Другие советы

Я также столкнулся с этой проблемой при попытке создать пользовательские виды выбранных ячеек для сгруппированной ячейки.Я решил эту проблему, создав 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;

Возможно, есть более простой способ, но я доволен результатом.

Я не думаю, что вы можете использовать пользовательский цвет.Однако вы можете использовать следующее свойство UITableViewCell

@property(nonatomic) UITableViewCellSelectionStyle selectionStyle

Стиль выделения - это константа backgroundView, которая определяет цвет ячейки при ее выделении.Значением по умолчанию является UITableViewCellSelectionStyleBlue.С тех пор как

typedef enum {
   UITableViewCellSelectionStyleNone,
   UITableViewCellSelectionStyleBlue,
   UITableViewCellSelectionStyleGray
} UITableViewCellSelectionStyle;

вы можете переключиться с синего цвета по умолчанию на серый или вообще не выбирать цвет.

Убедитесь, что после того, как вы объявите в заголовке

@property(nonatomic) UITableViewCellSelectionStyle selectionStyle

Реализовать

cell.selectionStyle = UITableViewCellSelectionStyleGray

где UITableViewCellSelectionStyleGray может быть UITableViewCellSelectionStyleNone, UITableViewCellSelectionStyleBlue, UITableViewCellSelectionStyleGray.

Другой способ сделать это - переместить вашу ячейку в новый вид с любым цветом, который вы хотите, и непрозрачностью около 50%.Вы перемещаете этот вид в ячейку, когда получаете -setSelected:анимированный:звони.Когда я говорю "переместить", вы на самом деле всегда можете иметь вид поверх своей камеры, но просто выключайте и включайте скрытую часть по мере необходимости.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top