Ich habe eine benutzerdefinierte UITableViewCell mit 2 Etiketten und einem Knopf. Die Zelle seine eigene Klasse hat:Informationen aus der Tabellenzelle abrufen?
class personTableCell: UITableViewCell {
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var emailLabel: UILabel!
@IBAction func inviteButtonPressed(_ sender: Any) {
self.accessoryType = .checkmark
}
}
Innerhalb der Ansicht-Controller, der Tabellen-Ansicht enthält, füge ich die Zellen der Tabelle in dieser Methode:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "person", for: indexPath) as? personTableCell
cell?.nameLabel.text = results[indexPath.row].name
cell?.emailLabel.text = results[indexPath.row].email
return cell!
}
Wenn ein Benutzer auf die Schaltfläche innerhalb der drückt Zelle, die das @IBAction func inviteButtonPressed
aufruft, möchte ich den Text der Zelle Beschriftungen in einem Array hinzufügen, das in demselben Ansichtscontroller wie der Tabelle initialisiert wird.
Wie kann ich so etwas erreichen, wenn die @IBAction func inviteButtonPressed
in einer separaten Datei als View Controller der Tabelle ist?
nicht bezogen werden: Zu viele Fragen und Ausrufezeichen für die Vögel. Ernsthaft: Niemals Informationen aus der Tabellenansichtszelle (der Ansicht) holen, sie aus dem Datenquellenfeld (dem Modell) holen – vadian
@vadian bitte ausführlich? – MarksCode
'dequeueReusableCell (withIdentifier: indexPath)' gibt eine nicht optionale Zelle zurück. Es ist ziemlich dumm, es optional zu spielen. Die Zelle wird offensichtlich in Interface Builder erstellt, so dass Sie wissen, dass sie existiert. – vadian