Ich habe benutzerdefinierte Zellen, die jeweils ein Textfeld in ihnen haben. Wenn ich den Text in ihnen ändere, möchte ich die aktuelle Zeile erhalten und dann mein Array korrekt aktualisieren. Bisher glaube ich nicht, dass ich überhaupt in der Lage war, den didFinishEditing-Lauf überhaupt laufen zu lassen. Ich habe dort einen einfachen Druckbefehl eingegeben, und als ich die textFields änderte, wurde nichts ausgedruckt. Ich bin mir nicht sicher, wo ich die Funktion platzieren soll, in der Klasse der Zelle oder der Hauptklasse. In der Hauptklasse läuft es nicht, und in der Zellklasse kann es mir den Index path.row nicht geben.Wie benutze ich didFinishEditing (textField) mit benutzerdefinierten Zellen?
Hier ist, was ich versucht habe:
func textFieldDidEndEditing(_ itemTitle: UITextField) {
let pointInTable = itemTitle.convert(itemTitle.bounds.origin, to: self.tableView)
let textFieldIndexPath = self.tableView.indexPathForRow(at: pointInTable)
items.insert(itemTitle.text!, at: textFieldIndexPath)
//tableView.reloadData()(This isn't really that important)
}
Und auch dies:
func textFieldDidEndEditing(_ itemTitle: UITextField) {
items.insert(itemTitle.text!, at: indexPath.row)
//tableView.reloadData()(This isn't really that important)
}
Hier ist meine Zelle Klasse:
class ItemTableViewCell: UITableViewCell {
@IBOutlet weak var itemTitle: UITextField!
@IBOutlet weak var date: UILabel!
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
itemTitle.resignFirstResponder()
}//(Not relevant)
}
In meiner Hauptklasse habe ich folgend:
class PreviewToDoViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate {
Und einen Screenshot, wie meine Ansicht ist gelegt:
Ich nahm so individuelle Zellen bis ich bin anfangen zu lernen. Ich habe .default und .subtitle Zellen sowie Tabellenansichten zuvor verwendet.
Vielen Dank für Antworten!
Ich glaube, Sie vergessen textfield.delegate = Selbst – Ram
Die Bearbeitung, sobald die Tastatur „done“ genannt wird, gedrückt wird (hat Ende hinzuzufügen und der Delegierte muss ebenfalls festgelegt werden). Sie müssen ein Ziel für die Wertänderung hinzufügen. Sie können es aus dem Interface Builder ziehen und eine Aktion auswählen. (oder es könnte sein "Bearbeitung geändert") –