Ich habe ein UITableView mit mehreren benutzerdefinierten UITableViewCells, die einige UITextFields und UISwitch (basierend auf Settings.app) eingerichtet haben. Meine Frage ist, wenn ein Benutzer auf die Schaltfläche "Speichern" in der Navigationsleiste klickt, was ist der beste Weg, um auf diese Textfelder zuzugreifen und die Steuerelemente zu wechseln, um ihre Werte zu speichern?iPhone Table View: Zugriff auf das Textfeld von benutzerdefinierten TableViewCell
Antwort
Mein Vorschlag ist, benutzerdefinierte UITableViewCell
s nicht zu verwenden. Ich habe es auf deine Art gemacht, aber es gibt einen viel besseren Weg. Verwenden Sie die accessoryView
-Eigenschaft der UITableViewCell
, der Sie eine beliebige Ansicht zuweisen können, z. B. UITextField
oder UISwitch
. Es zeigt sich genau wie in der Anwendung Einstellungen.
Dann, wenn Sie darauf zugreifen müssen, verwenden Sie nur
NSString *text = ((UITextField *)cell.accessoryView).text;
Allerdings müssen Sie über das Einrichten von Zellen und den Zugriff auf ihre Werte vorsichtig sein. Wenn eine Zelle außerhalb des Bildschirms angezeigt wird, wird sie entfernt und Sie können nicht auf das Textfeld zugreifen. Was Sie tun möchten, wenn Ihr Handy ist das Einrichten:
cell.accessoryView = nil; //Make sure any old accessory view isn't there.
if (/*cell needs text field*/) {
UITextField *textField = [[[UITextField alloc] initWithFrame:frame] autorelease];
textField.text = savedValue;
cell.accessoryView = textField;
[textField addTarget:self action:@selector(textChanged:) forControlEvents:UIControlEventValueChanged];
}
...
- (void) textChanged:(UITextField *)source {
self.savedValue = source.text;
}
Wenn Sie nicht Ed Vorschlag folgen, Sie sind wahrscheinlich am besten halten Sie Ihre Textansicht in der benutzerdefinierten Zelle und das Hinzufügen einer Eigenschaft, um die Ansicht zu gelangen.
Sie können auch festlegen, dass Ihre benutzerdefinierten Zellen einen Verweis auf Ihren übergeordneten Ansichtscontroller behalten und Benachrichtigungen senden, wenn der Benutzer Werte darin aktualisiert. Kopieren Sie im Prinzip das von vielen Bibliotheksobjekten in UIKit verwendete Delegatenmuster.
- 1. iPhone Tastatur Handhabung mit benutzerdefinierten Textfeld?
- 2. Bild in benutzerdefinierten TableViewCell verschwunden?
- 3. Direkter Zugriff auf Table Cells
- 4. Refreshing Table View Zeilen
- 5. Benutzerdefinierte Instanz von Zend View und Zugriff auf View Helper
- 6. Table-View-Reihen
- 7. Zugriff auf SOAP-Dienste über das iPhone
- 8. iPhone Textfeld
- 9. Wie update textfield.text Wert in benutzerdefinierten TableViewCell von UIPickerView
- 10. Zugriff auf Anwendungseinstellungen von ASP.Net MVC View
- 11. iphone, das Verständnis des View-Controller, PresentModalViewController
- 12. iOS: Anpassen von TableViewCell - Initialisieren von benutzerdefinierten Zellen
- 13. iPhone - Zugriff auf Standortinformationen von einem Foto
- 14. Iphone: Aufruf einer Funktion in einem View-Controller von der Super-View-Controller?
- 15. Zugriff auf das MobileWiFi.framework
- 16. Kein Zugriff auf TableViewCell-Elemente mithilfe der Benutzeroberflächenautomatisierung
- 17. UITextField Tastatur auf Tableviewcell anzeigen klicken
- 18. Zugriff auf andere Bereichsvariablen in benutzerdefinierten Vorlage
- 19. Wie animiere View Swap auf einfache View iPhone App?
- 20. Xcode7.3 UITest Offenlegungs Indicator in einem benutzerdefinierten TableViewCell
- 21. Zugriff auf textfield.text für das Textfeld innerhalb einer Zelle von tableView
- 22. Erkennen von UISearchBar Fokus auf das Textfeld
- 23. Zugriff auf Produktinformationen im benutzerdefinierten Quellenmodell für das Produktattribut "dynamic"
- 24. Wie füge ich View neben Tableviewcell mit Swift hinzu?
- 25. Custom TableViewCell Inhalte unsichtbar auf ios9 xcode7
- 26. Zugriff auf das BPM ID3-Tag in iPhone OS 3.0
- 27. Daten von einem Popover-View-Controller auf dem iPhone zurückgeben
- 28. Bilder von URL in TableViewCell vorladen
- 29. UITabBarController - Zugriff auf einen View-Controller?
- 30. Django Generic View - Zugriff auf Anfrage
Was passiert, wenn ich mehr als eine Zelle mit einem Textfeld habe (wie die Kontaktansicht in der Kontakte-App)? Sollte ich für jede der Ansichten eine andere Methode hinzufügen? – Rodrigo
Gefunden hier http://stackoverflow.com/questions/3572377/iphone-how-to-read-the-data-in-uitableview/3572595#3572595, dass Sie die Tags für Textfelder ändern können, so kann ich eine Methode haben und schalte es ein. – Rodrigo
Ich benutze UIControlEventEditingDidEnd. UIControlEventValueChanged scheint nicht aufgerufen zu werden:? – whatever0010011