¿Cómo puedo configurar la propiedad de celda de UITableView para que no se pueda seleccionar? No quiero ver ese cuadro de selección azul cuando el usuario toca la celda.
iphone
cocoa-touch
Mugunth
fuente
fuente
tableView:shouldHighlightRowAtIndexPath:
como lo señala Ayush a continuaciónRespuestas:
Establezca la
selectionStyle
propiedad de la celda de la tabla enUITableViewCellSelectionStyleNone
. Eso debería evitar que se resalte, y también puede verificar esa propiedad en sutableView:didSelectRowAtIndexPath:
.fuente
Para evitar la selección de filas
Para evitar completamente la selección del
UITableViewCell
, tenga suUITableViewDelegate
implementotableView:willSelectRowAtIndexPath:
. Desde ese método puede regresarnil
si no desea que se seleccione la fila.Esto evita que la fila sea seleccionada y
tableView:didSelectRowAtIndexPath:
llamada. Sin embargo, tenga en cuenta que esto no impide que se resalte la fila.Para evitar el resaltado de filas
Si desea evitar que la fila se resalte visualmente al tocarla, puede asegurarse de que la celda
selectionStyle
esté configurada enUITableViewCellSelectionStyleNone
, o preferiblemente puede tener suUITableViewDelegate
implemento de latableView:shouldHighlightRowAtIndexPath:
siguiente manera:fuente
didSelectRowAtIndexPath
porquewillSelectRowAtIndexPath
siempre se llamará de todos modos.utilizar este:
fuente
didSelectRowAtIndexPath
todavía se llama.Solo para iOS 6+.
Puede implementar el método
tableView:shouldHighlightRowAtIndexPath:
en su delegado. Lea más aquí: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.htmlfuente
También tuve este problema, probé todo lo ya mencionado. El truco final, que eliminó el "destello azul" al seleccionar una celda de la tabla, fue agregar esta línea:
No estoy seguro de si fue esta línea o todo combinado, pero como gran resultado total, no obtengo más selección azul o incluso el destello azul. ¡Contento!
fuente
Conjunto
cell.userInteractionEnabled = NO;
fuente
usar IB también es una forma elegante:
fuente
Apple dice que lo primero que debe hacer en didSelectRowAtIndexPath es anular la selección de la fila
Luego puede cambiar AccessoryType para que sea una marca de verificación, o ninguno, etc. Entonces, cuando ingrese didSelectRowAtIndexPath, puede deseleccionar la fila, y si no está destinada a ser seleccionada, simplemente no marque esa fila.
Guía de programación de la vista de tabla
fuente
Otra forma es agregar un par de métodos de categoría a
UITableViewCell
. Me gusta más que la respuesta de Sebastians (también buena) porque la forma en que estoy construyendo mi mesa. Pensé que podría ser útil para otra persona.fuente
Swift 4:
puede evitar la selección y el resaltado utilizando UITableViewDelegate: shouldHighlightRowAt
Esta respuesta asume que tiene una celda personalizada creada con el nombre: CustomTableViewCell
Y que creó un valor booleano dentro de esa celda personalizada llamada: isSelectable
Esta es la versión Swift de la respuesta objc de Sebastian Celis.
fuente
Si ha diseñado su celda en Interface Builder, puede hacerlo quitando la casilla de verificación de ' Interacción del usuario habilitada ' para
tableViewCell
.fuente
Existe otra forma sencilla de evitar que la selección aparezca en azul.
Selecciona una celda que no quieras que aparezca en azul.
A continuación, seleccione el inspector de atributos (el icono de escudo junto al icono de la regla en la vista de propiedades del lateral).
Luego cambie el campo 'Selección' de 'Azul' a 'Ninguno'.
Tenga en cuenta que, presumiblemente, todavía se está seleccionando, simplemente no aparecerá como seleccionado si todo lo que desea es evitar el efecto de la interfaz de usuario.
fuente
Use tableView: willDisplayCell: forRowAtIndexPath: en lugar de tableView: didSelectRowAtIndexPath: para deshacerse del flash que aparece la primera vez que toca la celda.
fuente
Para hacer que cierta fila no esté seleccionada, debe realizar algunos cambios en dos métodos de delegado de UITableView.
En el método siguiente
después de la asignación de la celda, escriba el código a continuación
El código anterior evitará resaltar la celda, si de alguna manera el usuario intenta seleccionar.
en este método de delegado a continuación
si no escribe, la
if(indexPath.row == someCellNumber) return;
fila seguirá estando seleccionada y existe la posibilidad de que la aplicación se bloqueefuente
Rápido 4:
En la clase de celda:
fuente
Rápido 5
fuente