Como posso definir a propriedade da célula do UITableView como não selecionável? Não quero ver aquela caixa de seleção azul quando o usuário toca na célula.
iphone
cocoa-touch
Mugunth
fonte
fonte
tableView:shouldHighlightRowAtIndexPath:
conforme observado por Ayush abaixoRespostas:
Defina a
selectionStyle
propriedade da célula da tabela comoUITableViewCellSelectionStyleNone
. Isso deve impedir que seja realçado e você também pode verificar essa propriedade no seutableView:didSelectRowAtIndexPath:
.fonte
Para evitar a seleção de linha
Para evitar completamente a seleção do
UITableViewCell
, tenha seuUITableViewDelegate
implementotableView:willSelectRowAtIndexPath:
. A partir desse método, você pode retornarnil
se não quiser que a linha seja selecionada.Isso evita que a linha seja selecionada e
tableView:didSelectRowAtIndexPath:
chamada. Observe, no entanto, que isso não impede que a linha seja destacada.Para evitar o realce de linha
Se você quiser evitar que a linha seja visualmente destacada ao tocar, você pode garantir que a célula
selectionStyle
está definida paraUITableViewCellSelectionStyleNone
, ou de preferência você pode ter seuUITableViewDelegate
implemento datableView:shouldHighlightRowAtIndexPath:
seguinte forma:fonte
didSelectRowAtIndexPath
porquewillSelectRowAtIndexPath
sempre será chamado de qualquer maneira.usa isto:
fonte
didSelectRowAtIndexPath
ainda é chamada.Apenas para iOS 6+.
Você pode implementar o método
tableView:shouldHighlightRowAtIndexPath:
em seu delegado. Leia mais aqui: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.htmlfonte
Tive esse problema, também, tentei tudo já mencionado. O truque final, que eliminou o "flash azul" na seleção de uma célula da tabela, foi adicionar esta linha:
Não tenho certeza se foi essa linha ou tudo combinado, mas como resultado geral, não recebo mais seleção azul ou mesmo o flash azul. Feliz!
fonte
Conjunto
cell.userInteractionEnabled = NO;
fonte
usar IB também é uma maneira elegante:
fonte
A Apple diz que a primeira coisa que você deve fazer em didSelectRowAtIndexPath é desmarcar a linha
Em seguida, você pode alterar o AccessoryType para ser uma marca de seleção, ou nenhum, etc. Portanto, ao inserir didSelectRowAtIndexPath, você pode desmarcar a linha e, se não for para ser selecionada, simplesmente não marque essa linha.
Guia de programação de visualização de tabela
fonte
Outra maneira é adicionar alguns métodos de categoria a
UITableViewCell
. Gosto mais dessa resposta do que de Sebastian (também bom), por causa da maneira como estou construindo minha mesa. Achei que poderia ser útil para outra pessoa.fonte
Swift 4:
você pode evitar a seleção e o realce usando o UITableViewDelegate: shouldHighlightRowAt
Esta resposta pressupõe que você tenha uma célula personalizada criada chamada: CustomTableViewCell
E que você criou um booleano dentro dessa célula personalizada chamada: isSelectable
Esta é a versão rápida da resposta objc de Sebastian Celis.
fonte
Se você projetou sua célula no Interface Builder, pode fazer isso removendo a caixa de seleção de ' Interação do usuário habilitada ' para o
tableViewCell
.fonte
Existe outra maneira simples de evitar que a seleção apareça em azul.
Selecione uma célula que você não deseja que apareça em azul.
Em seguida, selecione o inspetor de atributos (o ícone de escudo próximo ao ícone da régua na visualização de propriedades na lateral).
Em seguida, altere o campo 'Seleção' de 'Azul' para 'Nenhum'.
Observe, presumivelmente, isso ainda está sendo selecionado, apenas não aparecerá como selecionado se tudo o que você quiser for evitar o efeito da interface do usuário.
fonte
Use tableView: willDisplayCell: forRowAtIndexPath: em vez de tableView: didSelectRowAtIndexPath: para se livrar do flash que aparece na primeira vez que você toca na célula.
fonte
Para tornar determinada linha desmarcada, você deve fazer algumas mudanças em dois métodos do delegado UITableView.
No método abaixo
após a alocação da célula, escreva o código abaixo
O código acima impedirá o destaque da célula, se de alguma forma o usuário tentar selecionar.
neste método delegado abaixo
se você não escrever, a
if(indexPath.row == someCellNumber) return;
linha ainda estará selecionada e há uma chance de travamento do aplicativofonte
Swift 4:
Na classe de células:
fonte
Swift 5
fonte