Elemente PrototypeCell ansprechen

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

  • Elemente PrototypeCell ansprechen

    Hallo,

    ich möchte ein Quiz umsetzen. Ich habe dazu ein Array mit id und antworttext. Dann habe ich eine tableview mit Prototypecells, auf denen sich ein Label, ein Textfeld und ein Button befinden. In die Labels werden beim Laden der TableView die ids geladen. Im Textfeld soll die Antwort eingetragen werden, beim drücken des Buttons soll die Antwort geprüft werden.
    Nun komme ich nicht drauf, wie ich bei betätigung des Buttons prüfen kann, ob im Textfeld die richtige Antwort steht. Die Action methode für den button und das Textfeld als outlet befindet sich bei mir in einer einzelnen Klasse TableViewCell. Wie stelle ich denn fest, welchen Button ich betätigt habe (also zu welcher Zelle der Button gehört)? Dasselbe für Textfelder? Ich muss den einzelnen Textfeldern ja über die Cell-Nummer die Antwort aus dem Array zuweisen können. Wie könnte ich das umsetzen?
  • Danke!
    Das mit der Tag-zuweisung hatte ich auch schon gefunden. Die Zuweisung in der Methode tableView:cellForRowAtIndexPath: bekomme ich aber nicht hin. Wenn ich den Button als Action einbinde, weiß ich nicht, wie ich in der Methode darauf zugreifen soll. Wenn ich den Button als Outlet setze, bekomme ich eine Fehlermeldung:
    Main.storyboard: Couldn't compile connection: <IBCocoaTouchOutletConnection:0x7f8d0cbda2a0 <IBProxyObject: 0x7f8d0aced1f0> => btn => <IBUIButton: 0x7f8d0acd3020>>

    Wenn ich dem Button (und Textfeld) einen Tag zuweisen könnte, hätte ichs ja.
  • Ich versuche jetzt ein Textfeld auszulesen indem ich die Zelle ermittle von der aus der Button gedrückt wurde und dann über die Zelle auf das TExtfeld zugreide. Ich bekomme aber folgende Fehlermeldung:
    -[UITableViewCellContentView answerTextField]: unrecognized selector sent to instance 0x8cacfa0
    2013-12-17 00:17:48.995 Anatomie Lerner[44985:a0b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewCellContentView answerTextField]: unrecognized selector sent to instance 0x8cacfa0'

    Gibt es vlt eine Methode, die direkt die ausgewählte Zelle zurückgibt?

    Quellcode

    1. - (IBAction)buttonPressed:(id)sender {
    2. QuizTableViewCell* cell = (QuizTableViewCell*)[sender superview];
    3. NSLog(@"Antwort: %@", cell.answerTextField.text);
    4. }
  • Habs hinbekommen mit folgender Lösung:

    Quellcode

    1. - (IBAction)buttonPressed:(id)sender {
    2. int i = [sender tag];
    3. NSIndexPath* path = [NSIndexPath indexPathForRow:i inSection:0];
    4. QuizTableViewCell* cell = (QuizTableViewCell*)[self.tableView cellForRowAtIndexPath:path];
    5. NSLog(@"Zelleninhalt:%@", cell.answerTextField.text);
    6. }