Soy un novato en el desarrollo de iOS. Quiero agregar una marca de verificación a mi UITableViewCell
cuando está seleccionado. La marca de verificación debe eliminarse cuando se selecciona otra fila. ¿Cómo haría esto?
ios
uitableview
Suchi
fuente
fuente
En su método UITableViewDatasource:
Y lastIndexPath es un
property(strong) NSIndexPath* lastIndexPath;
fuente
Descubrí que volver a cargar los datos interrumpe la animación de deselección de una manera fea.
Esta implementación de Swift agrega / elimina claramente las marcas de verificación y anula la selección de la fila:
donde
lastSelection
se declara comovar lastSelection: NSIndexPath!
No se
cellForRowAtIndexPath
necesita actividad adicional . No debería ser difícil de replicar en Obj-C.fuente
Para establecer una marca de verificación:
Para seleccionar / deseleccionar una celda:
Para anular la selección de la celda anterior, use un NSIndexPath * lastSelected ivar para rastrear la última celda seleccionada:
fuente
Actualizar Swift 4
fuente
basado en la vista de la tabla dataArray formada ... de manera similar, tomé una matriz vacía, y cada vez que el usuario toca una celda, según el indexValue de dataArray, almacené ese objeto en selectedDataArray
En cuanto a la pregunta, es como ... Una pregunta tiene múltiples opciones (Respuestas), pero finalmente solo una o ninguna respuesta será el resultado
Del mismo modo, solo una celda debe mostrar una marca de verificación y las celdas restantes deben estar sin seleccionar ... en algún caso, puede deseleccionar su respuesta ... Espero que esta sea la mejor respuesta a esta pregunta
fuente
Usando Swift 4.2 y Swift 5 Código de trabajo de marca de verificación solo para la fila seleccionada en TableView
fuente
Suponiendo que estás en una clase que hereda
UITableViewController
, esto funciona en Swift 3:fuente
Creo que es más limpio configurar el accesorio dentro de su implementación personalizada de UITableViewCell. En rápido, he usado:
fuente
pequeño error tipográfico
tiene que leer
y tambien en el
donde previamente seleccionado es su ivar local, etc. de esa manera, si vuelve a cargar con un índice seleccionado, también se deselecciona cuando recorre las posibles selecciones.
fuente
Las respuestas anteriores no funcionan si reutilizó la celda para una gran cantidad de datos. En el desplazamiento puede ver una marca de verificación repetida. Para evitar el uso de los siguientes pasos:
declarar en la variable: var indexNumber: NSInteger = -1
Agregue el siguiente código en cellforRowAtIndexPath:
Y en didselectAtIndexpath agregue el siguiente código:
anular func tableView (_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
fuente
Es mejor afrontar este problema desde otra dirección. Ponga todo el trabajo en los mecanismos internos de UIKit y mueva la implementación a UITableViewCell:
fuente
Simplemente llame al
didSelectRowAtIndexPath
método cuando seleccione cualquier fila para Mostrar CheckMark y seleccione la fila de marca de verificación para ocultar CheckMark.fuente
swift 4 en caso de que lo necesite.
fuente
Hay dos formas de hacerlo. uno es sin selecciones múltiples y otro es con selecciones múltiples.
fuente
El código mencionado anteriormente solo funciona con la selección única . Este código siguiente seguramente funcionará para selecciones múltiples .
fuente
Cuando una celda seleccionada (con la marca de verificación se selecciona nuevamente), simplemente elimine la selección.
Prima:
Usar
self.tableView.indexPathForSelectedRow
para detectar indexPath para la celda seleccionadafuente