Necessidade de alterar a cor de seleção de exibição de tabela
Pergunta
Eu preciso alterar a seleção de cor azul padrão de exibição de tabela para um pouco de cor personalizada. Existe alguma maneira de fazer isso. Ajuda-me
Solução
A melhor maneira de fazer isso é assim:
// 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;
}
A parte relevante para você é o cell.selectedBackgroundView = v;
instrução.
Você pode substituir a visão 'v' muito básico aqui com qualquer ponto de vista que você gosta.
Outras dicas
Eu também me deparei com este problema com a tentativa de criar visualizações celulares selecionados personalizado para o celular agrupados. Eu resolvi este problema criando 3 tipos de imagens para a célula superior, médio e inferior assumindo que haverá uma célula meio.
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;
Não é possivelmente uma maneira mais fácil, mas estou feliz com o resultado.
Eu não acho que você pode usar uma cor personalizada. No entanto, você pode usar a seguinte propriedade do UITableViewCell
@property(nonatomic) UITableViewCellSelectionStyle selectionStyle
O estilo de selecção é uma constante backgroundView que determina a cor de uma célula quando ele é selecionado. O valor padrão é UITableViewCellSelectionStyleBlue. Desde
typedef enum {
UITableViewCellSelectionStyleNone,
UITableViewCellSelectionStyleBlue,
UITableViewCellSelectionStyleGray
} UITableViewCellSelectionStyle;
Você pode alternar entre o azul padrão de cinza, ou nenhuma seleção colorida em tudo.
Certifique-se de que, depois de declarar no cabeçalho
@property(nonatomic) UITableViewCellSelectionStyle selectionStyle
Implementar
cell.selectionStyle = UITableViewCellSelectionStyleGray
onde UITableViewCellSelectionStyleGray
pode ser UITableViewCellSelectionStyleNone
, UITableViewCellSelectionStyleBlue
, UITableViewCellSelectionStyleGray
.
Outra maneira de fazer isso seria a de se mover em uma nova visão sobre o seu celular, com qualquer cor que você gostaria e 50%, ou opacidade. Você se move essa visão para o celular quando você começa um -setSelected: animado: chamada. Quando digo movimento, você realmente pode sempre ter uma visão em cima do seu celular, mas é só virar a pouco escondido fora e sobre como você precisa.