Ich habe zwei VCs und ich versuche, Daten von der ersten VC zu der zweiten über ein Segment zu übergeben. Der erste VC hat eine Tabellenansicht. Jede Zelle enthält einen Titel und eine Beschreibung, die unter Verwendung von Kerndaten gespeichert werden. Ich möchte eine Detailansicht jeder Zelle in der zweiten VC haben. Ich habe zwei Zeichenfolgen initialisiert, um die Werte von der ersten VC zu speichern, und sie den Zeichenfolgen in der zweiten VC zugewiesen.Fehler beim Übergeben von Daten zwischen VC
Bitte nehmen Sie sich einen Blick auf den Code unten:
var SelectedTitle = String()
var SelectedDisc = String()
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
SelectedTitle = self.listAthkar[indexPath.row].title!
print(SelectedTitle)
SelectedDisc = self.listAthkar[indexPath.row].details!
print(SelectedDisc)
performSegue(withIdentifier: "showCell", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "showCell") {
var destinationVC = segue.destination as! showCellVC
destinationVC.passedTittle = SelectedTitle
destinationVC.passedDisc = SelectedDisc
}
}
class showCellVC: UIViewController {
var passedTittle = String()
var passedDisc = String()
@IBOutlet weak var cellTitle: UILabel!
@IBOutlet weak var cellDisc: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
cellTitle.text = passedTittle
cellDisc.text = passedDisc
print("Title Passed is \(passedTittle)")
print("Discription Passed is \(passedDisc)")
}
Wenn ich der App, die Konsole druckt testen:
Title Passed is
Discription Passed is
title
Description
Hier ist ein Bild von der aktuellen Zelle
Irgendeine Idee, warum es die Daten nicht an die zweite VC weitergibt?
Ein paar Vorschläge, aber zuerst, Ihr Code ist ein bisschen anders als meins, aber es * sieht aus * wie es funktionieren sollte. (1) Verschieben Sie Ihre Druckanweisungen in das 'prepare (for sequences: sender:)' und machen * save * die ersten VC-Variablen korrekt. (2) Zeigen Sie uns - oder überprüfen Sie sich selbst - ob das Segment korrekt in IB, Tippfehlern oder etwas anderem eingerichtet ist. (3) Eine weitere Überprüfung besteht darin, sicherzustellen, dass Sie den zweiten VC ordnungsgemäß instanziieren - erwägen Sie, Ihren Code in 'zu ändern, wenn das Ziel vC = segue.destination als? showCellVC' und übergeben Sie die Variablen innerhalb dieses if. – dfd
Bitte verwenden Sie die Swift-Namenskonvention, die für Variablennamen niedriger Camelcase ist. –
print (SelectedTitle) In didSelectetRowAt hat einen Require-Wert? –