Frage von Drawer01, 44

Swift 3 PrepareForSegue in TableView?

Hey Leute,

habe nach einen Tutorial speziell für TableViews und PrepareForSegue und so gesucht aber nie hat es so funktioniert wie ich es brauchte.... kann mir jemand sagen warum ich hier bei dem Label nicht den Output bekomme den ich brauche ? Habe mir das aus verschiedenen Tutorials rausgesucht und es scheint alles richtig zu sein.. keine Fehlermeldung. Trotzdem kein Label-Output im 2.View Controller

http://pastebin.com/dqFPJmMB

ps... das mit dem Bild einfügen klappt da auch irgendwie nicht falls jemand eine Idee hat xD

* Edit: Habe die MyCell.swift mit ins Pastebin eingefügt 

Expertenantwort
von wolfgang1956, Community-Experte für Apple, 17

Einfach mal die Dokumentation durchlesen. Hier ist immer!! die aktuelle Dokumentation zur Mac- bzw. iOS-Programmierung:

http://developer.apple.com/library/mac/navigation/

http://developer.apple.com/library/ios/navigation/

https://developer.apple.com/library/ios/referencelibrary/GettingStarted/Developi...

Antwort
von Babelfish, 27

Setze deinen Label-Text mal nicht in viewDidLoad, sondern in viewWillAppear oder viewDidAppear:

override func viewWillAppear(_ animated: Bool) {

  super.viewWillAppear(animated)

  TestLabel.text = dataPassed

}

Kommentar von Drawer01 ,

klappt leider immer noch nicht... 

Kommentar von Babelfish ,

Wird denn prepareForSegue überhaupt aufgerufen?

Kommentar von Drawer01 ,

keine Ahnung woher weis bin das ?
Also  print() gibt einen Output

Kommentar von Babelfish ,

Xcode hat einen mächtigen Debugger mit Breakpoints und vielen weiteren nützlichen Dingen.

Ansonsten reichen natürlich auch ein paar print() aus um festzustellen, ob die gewünschten Funktionen aufgerufen werden und ob Variablen den erwarteten Wert haben. Da musst du schon selber mal schauen, was wann aufgerufen wird und welche Wert bspw. dein dataPassed hat.

Kommentar von Drawer01 ,

Achso ja also beim viewcontroller gibt Datapassed nichts aus
Das ist mein Problem

Kommentar von Babelfish ,

Und du bist dir sicher, dass prepareForSegue wirklich aufgerufen wird. Kann ich kaum glauben, da die Funktion in Swift so heißen muss:

override func prepare(for segue: UIStoryboardSegue, sender: Any?)

Außerdem kannst du so die ausgewählte Zeile ermitteln und muss so gar keinen manuellen Segue auslösen:

(tableView.indexPathForSelectedRow! as NSIndexPath).row

Gruß

Kommentar von Drawer01 ,

und an welche stelle schreibe ich die 2. Zeile? :P

Kommentar von Babelfish ,

Diese Anweisung liefert dir einen Int-Wert mit der ausgewählten Zelle. Also etwa so in der prepare-Funktion:

vc.dataPassed = self.mydata[(tableView.indexPathForSelectedRow! as NSIndexPath).row]

Du musst schon versuchen den Sinn hinter den ganzen Sachen zu verstehen. Wenn du nur Tutorials oder Tipps anschreibst und nicht in der Doku nachliest, was du da eigentlich machst, wird das nie was mit dem Programmieren.

Kommentar von Drawer01 ,

Ich weis jetzt woran es liegt... ich möchte die unwind Methode einbauen... damit eben nicht immer neue Seiten geöffnet werden sondern ich zur alten zurück kehren kann .... nur klappt das nicht

Kommentar von Babelfish ,

Ist jetzt nicht so schwer zu finden, wie man das macht:

let _ = self.navigationController?.popViewController(animated: true)

Hier findest du einige Infos dazu:

https://www.ralfebert.de/ios/storyboards-segues/

Gruß

Kommentar von Drawer01 ,

Vielen Dank für die Hilfe aber genau durch das lesen lerne ich verstehen ...

Keine passende Antwort gefunden?

Fragen Sie die Community