Eu criei um costume UITableViewCell
. A visualização da tabela está mostrando dados bem. O que me impede é que, quando o usuário toca na célula da tableview, quero mostrar a cor de fundo da célula que não seja os valores padrão [cor azul] para destacar a seleção da célula. Eu uso esse código, mas nada acontece:
cell.selectedBackgroundView.backgroundColor=[UIColor blackColor];
Não há necessidade de células personalizadas. Se você deseja alterar apenas a cor selecionada da célula, faça o seguinte:
Objetivo-C:
Rápido:
fonte
Exibição de tabela A cor de fundo da seleção de célula pode ser definida através do Storyboard no Interface Builder:
fonte
Se você possui uma tabela agrupada com apenas uma célula por seção, basta adicionar esta linha extra ao código:
bgColorView.layer.cornerRadius = 10;
Não se esqueça de importar o QuartzCore.
fonte
Swift 3: para mim funcionou quando você o colocou no
cellForRowAtIndexPath:
métodofonte
awakeFromNib()
método (no caso de célula personalizada).O seguinte funciona para mim no iOS 8.
Preciso definir o estilo de seleção para que
UITableViewCellSelectionStyleDefault
a cor de plano de fundo personalizada funcione. Se houver outro estilo, a cor de plano de fundo personalizada será ignorada. Parece haver uma mudança de comportamento, pois as respostas anteriores precisam definir o estilo como nenhum.O código completo da célula da seguinte maneira:
fonte
Crie uma célula personalizada para a célula da tabela e, na célula personalizada class.m, coloque o código abaixo, ele funcionará bem. Você precisa colocar a imagem colorida desejada na
selectionBackground
UIImage.fonte
Extensão Swift 3.0
cell.selectionColor = UIColor.FormaCar.blue
fonte
@IBInspectable
sobre o var, se quiser.@IBDesignable
não é útil para isso.Precisamos definir a vista de fundo selecionada neste método.
fonte
Se você deseja adicionar uma cor destacada personalizada ao seu celular (e seu celular contém botões, rótulos, imagens etc.), segui as próximas etapas:
Por exemplo, se você deseja uma cor amarela selecionada:
1) Crie uma visualização que se ajuste a todas as células com 20% de opacidade (com cor amarela) chamada, por exemplo, backgroundselectedView
2) No controlador de célula, escreva isto:
fonte
No Swift 4, você também pode definir a cor de fundo da sua célula da tabela globalmente (extraída daqui ):
fonte
Se você estiver usando um TableViewCell personalizado, também poderá substituir
awakeFromNib
:fonte
Mais uma dica da maneira de Christian mostrar o plano de fundo dos cantos arredondados para as mesas agrupadas.
Se eu usar o
cornerRadius = 10
celular, ele mostra o fundo de seleção arredondado dos quatro cantos. Não é o mesmo com a interface do usuário padrão da exibição de tabela.Então, penso em uma maneira fácil de resolver isso com o cornerRadius . Como você pode ver nos códigos abaixo, verifique a localização da célula (superior, inferior, média ou superior) e adicione mais uma subcamada para ocultar o canto superior ou inferior. Isso mostra exatamente a mesma aparência com o fundo de seleção da exibição de tabela padrão.
Testei esse código com o iPad
splitterview
. Você pode alterar a posição do quadro do patchLayer conforme necessário.Informe-me se houver uma maneira mais fácil de obter o mesmo resultado.
fonte
Quero observar que o editor XIB oferece as seguintes opções padrão:
Seção: azul / cinza / nenhum
(a coluna da direita com opções, 4ª guia, primeiro grupo "Célula de exibição de tabela", 4º subgrupo, o 1º de 3 itens lê "Seleção")
Provavelmente, o que você deseja fazer pode ser alcançado selecionando a opção padrão correta.
fonte
Conforme a cor personalizada de uma célula selecionada
UITableView
, ótima solução conforme a resposta de Maciej SwicApenas para adicionar a isso, você declara a resposta do Swic na configuração da célula geralmente em:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
E para um efeito adicional, em vez das cores do sistema, você pode usar valores RGB para obter uma aparência de cor personalizada. No meu código, é assim que eu consegui:
Deixe-me saber se isso funciona para você também. Você pode mexer com o
cornerRadius
número dos efeitos nos cantos da célula selecionada.fonte
Eu tenho uma abordagem um pouco diferente de todos os outros que reflete a seleção por toque, e não depois de ter sido selecionada. Eu tenho um UITableViewCell subclassed. Tudo o que você precisa fazer é definir a cor de fundo nos eventos de toque, que simula a seleção no toque e, em seguida, definir a cor de fundo na função setSelected. Definir a cor de fundo na função selSelected permite desmarcar a célula. Certifique-se de passar o evento de toque para o super, caso contrário, a célula não funcionará como se estivesse selecionada.
fonte
Para adicionar o plano de fundo para todas as células (usando a resposta de Maciej):
fonte
Para override
UITableViewCell
ésetSelected
também funciona.fonte
para aqueles que querem apenas se livrar do plano de fundo cinza selecionado padrão, coloque esta linha de código na função cellForRowAtIndexPath:
fonte
para Swift 3.0:
fonte
Eu uso a abordagem abaixo e funciona bem para mim,
fonte
Swift 4+:
Adicione as seguintes linhas na sua célula da tabela
Finalmente deve ser como abaixo
fonte
Aqui estão as partes importantes do código necessárias para uma tabela agrupada. Quando qualquer uma das células em uma seção é selecionada, a primeira linha muda de cor. Sem definir inicialmente o estilo de seleção de células como nenhum, há um recarregamento duplo de anonimato quando o usuário clica na linha0 em que a célula muda para bgColorView e depois desbota e recarrega o bgColorView novamente. Boa sorte e deixe-me saber se existe uma maneira mais simples de fazer isso.
fonte
No caso de classe de célula personalizada. Apenas substitua:
fonte
É fácil quando o estilo de exibição de tabela é simples, mas no estilo de grupo, é um pequeno problema, resolvo-o da seguinte maneira:
observou o kGroupTableViewCellWidth, eu o defino como 300, é a largura da célula da visualização da tabela do grupo no iPhone
fonte
Verifique se você usou a linha acima para usar o efeito de seleção
fonte
fonte
Estou usando o iOS 9.3 e definindo a cor através do Storyboard ou a configuração
cell.selectionStyle
não funcionou para mim, mas o código abaixo funcionou:Encontrei esta solução aqui .
fonte
Tente Seguir o código.
// Versão rápida:
fonte
Swift 4.x
Para alterar a cor de fundo da seleção para qualquer cor, use a extensão rápida
Crie a extensão UITableView Cell como abaixo
Em seguida, chame removeCellSelectionColour () com a instância da célula.
fonte