Enviar el texto del campo de texto desde dentro de una tabla a un botón externo.
Tengo una tabla con un campo de texto dentro de ella. Quiero enviar lo que el usuario escribe al hacer clic en un botón. Pero el botón no está dentro de la tabla.
Así que utilicé esta función simple para pasar el texto del campo de texto a esta variable:
extension TableViewCell: UITextFieldDelegate {
func textFieldDidChangeSelection(_ textField: UITextField) {
amountFromCell = textField.text!
print(amountFromCell)
}
}
Ejecuté el código y muestra lo que escribo en el campo de texto en la consola. Pero esta variable, como puedes ver, está definida en TableViewCell, no donde está presente el botón.
Entonces creé otra variable amountFromCell
en la clase TableViewCell para almacenar los datos en ella.
Y hice algo así:
amountFromTable = cell.amountFromCell
return cell
Y finalmente ejecuté este código cuando hago clic en el botón:
@IBAction func btnPrintAmount(_ sender: UIButton) {
print(amountFromTable)
}
Pero devuelve vacío.
Entonces sé que tengo un valor en amountFromCell
, pero no estoy seguro si al usar amountFromTable = cell.amountFromCell
al devolver la celda, se agrega a amountFromTable
o no.
O tal vez amountFromTable = cell.amountFromCell
agrega nil
cuando se crea la celda y no está obteniendo el valor más reciente del campo de texto.
Estoy confundido sobre cómo enviar datos desde este campo de texto que está dentro de la tabla a una variable definida fuera de la tableView.
davy.ai
Para enviar datos desde el cuadro de texto dentro de la tabla a una variable que está definida fuera de la tabla, puedes utilizar un método delegado. Primero, crea un protocolo con un método que reciba el texto del cuadro de texto como parámetro:
Luego, en tu clase
TableViewCell
, establece el delegado de la celda como el controlador de vista:A continuación, en la función
textFieldDidChangeSelection
, llama al método del delegado con el texto del cuadro de texto:En el controlador de vista que contiene la tabla, implementa el protocolo
TableViewCellDelegate
y establece el delegado de cada celda comoself
:Finalmente, puedes acceder a la variable
amountFromTable
actualizada desde la función de acción del botón:Con esta implementación, cada vez que el texto del cuadro de texto cambia, se llamará a la función
cellDidUpdateTextField
y el controlador de la vista podrá actualizar la variableamountFromTable
.