UITextFeld innerhalb einer UITableViewCell auslesen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UITextFeld innerhalb einer UITableViewCell auslesen

    Hallo,

    ich möchte zwei Zellen meiner Tabelle jeweils mit einem TextFeld ausstatten.
    Hier mein Code:

    Quellcode

    1. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    2. {
    3. static NSString *CellIdentifier = @"Cell";
    4. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    5. if (cell == nil)
    6. {
    7. cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    8. }
    9. if ([indexPath section] == 0) {
    10. UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(110, 10, 185, 30)];
    11. textField.adjustsFontSizeToFitWidth = YES;
    12. if ([indexPath row] == 0) {
    13. textField.placeholder = @"Name";
    14. textField.keyboardType = UIKeyboardTypeDefault;
    15. textField.returnKeyType = UIReturnKeyNext; textField.tag = 0;
    16. cell.textLabel.text = @"Name";
    17. }
    18. else {
    19. textField.placeholder = @"Jahr";
    20. textField.keyboardType = UIKeyboardTypeNumberPad;
    21. textField.returnKeyType = UIReturnKeyDone;
    22. textField.tag = 1; cell.textLabel.text = @"Jahr";
    23. }
    24. textField.autocorrectionType = UITextAutocorrectionTypeNo;
    25. textField.autocapitalizationType = UITextAutocapitalizationTypeSentences;
    26. textField.textAlignment = UITextAlignmentLeft;
    27. textField.clearButtonMode = UITextFieldViewModeNever;
    28. [textField setEnabled: YES];
    29. [cell addSubview:textField];
    30. [textField release];
    31. } else {
    32. cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    33. cell.textLabel.text = self.country.name;
    34. cell.imageView.image = [UIImage imageNamed:[self.country.iso stringByAppendingString:@".png"]];
    35. }
    36. return cell;
    37. }
    Alles anzeigen



    Jetzt möchte ich an einer anderen Stelle (eine Methode zum Speichern) in dem ViewController den Text der beiden TextFelder auslesen.
    Könnt ihr mir sagen, was der einfachste und schnellste Weg ist?
    Viele Grüße
    Jens

    -----------------------
  • Hmm, ich verstehe dich nicht so 100%ig... Sorry.

    Also in der Methode zum Speichern mache ich u.a. folgendes:

    Quellcode

    1. 1. Country *country = [[Country alloc] init];
    2. 2. [country setName: @"Deutschland"];
    3. 3. [country setIso: @"DE"];
    4. 4. [country release];



    Jetzt möchte ich die Werte, die ich in Zeile 2 und 3 angegeben habe, durch die Werte aus den TextFeldern der Tabelle ersetzen.
    Viele Grüße
    Jens

    -----------------------

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von j-ckruse ()

  • Hi,

    das ist nur ein Ausschnitt aus der Methode. Beim Speichern brauche ich das Objekt um es an den übergeordneten ViewController zurückzugeben. Den Quellcode habe ich nicht mit angegeben.

    Trotzdem Danke für deinen Hinweis.
    Viele Grüße
    Jens

    -----------------------
  • Ich Frage mich, wie Du feststellst, wann Du den Inhalt des Textfeldes auslesen möchtest. Eigentlich ist der einzig sinnvolle Zeitpunkt, wenn die Texteingabe beendet wird. Wenn DU danach nämlich Deine Tabelle scrollst, ist die Zelle und damit auch der Inhalt des Textfeldes futsch.

    Also sollte Dein TableViewController UITextFieldDelegate und die Methode textFieldShouldEndEditing: implementieren. In der Tag-Property des Textfeldes speicherst Du die Zeilennummer der Zelle des Textfeldes und das Textfeld bekommt den TableViewController als Delegate. Dann kannst Du in textFieldShouldEndEditing: den Text aus dem Textfeld entsprechend abspeichern.
    „Meine Komplikation hatte eine Komplikation.“