He estado tratando de obtener el IndexPath de la fila seleccionada actualmente. He estado usando esta función:

    override func tableView(_ tableView: UITableView, didDeselectRowAt indexPathForSelection: IndexPath) {
            print(SavedColors.SavedColorsList[indexPathForSelection.row].Name)
    }

El problema es que me da el IndexPath de la celda que se acaba de deseleccionar. Si presiono la primera celda, no pasa nada. Si luego presiono la segunda celda, imprime "0" el indexPath de la primera celda, y así sucesivamente. Quiero obtener la ruta del índice tan pronto como se presione una celda. ¿Cómo hago esto?

Dicho de otra manera: la función se llama cuando la selección se cambia a otra celda, pero no cuando se selecciona una celda. Quiero que el usuario toque y que la función se active. En cambio, cuando toca, no sucede nada, hasta que toca otra celda diferente. ¿Cómo puedo arreglar esto?

No sé si esto está relacionado, pero la función self.tableView.deselectSelectedRow(animated: true) tampoco está haciendo nada ...

Gracias

1
qwerty-dvorak 11 feb. 2020 a las 05:25

2 respuestas

La mejor respuesta

Debe usar didSelect en lugar de deSelect

 override func tableView(_ tableView: UITableView, didSelectRowAt indexPathForSelection: IndexPath) {
            print(SavedColors.SavedColorsList[indexPathForSelection.row].Name)
    }

.

DidSelect llama cuando selecciona una celda y desSelect llama cuando desmarca una celda ... así que tenga cuidado al escribir estas funciones happy coding =)

0
jawadAli 11 feb. 2020 a las 04:57

Lo siento pero no entiendo tu pregunta

Si realmente solo quieres obtener indexPath cuando tocas cierta celda, puedes conformarte

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)

0
Ghean Ginanjar Adiguna 11 feb. 2020 a las 02:33