• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Inhalt einer ausgewählten TableView Zelle an neue View weitergeben (Swift 2)

belinea

deaktivierter Benutzer
Registriert
12.07.08
Beiträge
351
Ich habe bereits mehrere YouTube Tutorials durch und auch Beispiele auf stackoverflow.net probiert. Nichts davon hat funktioniert. Die meisten Beispiele nutze dafür prepareForSegue. Keines der Beispiele habe ich mit Swift2 zum Laufen gebracht.

Ich hatte folgendes Tutorial versucht: Aber XCode7/Swift2 scheint ab Minute 9:30 nicht mehr kompatibel zu sein.
Um diese Inhalte anzuzeigen, benötigen wir die Zustimmung zum Setzen von Drittanbieter-Cookies.
Für weitere Informationen siehe die Seite Verwendung von Cookies.

Ich kann zwar mit der Funktion willSelectRowAtIndexPath die ausgewählte Zelle einer TableView an einen neuen ViewController übergeben, aber ich möchte den Inhalt eines Label der in einer Zelle steht übergeben (falls das überhaupt möglich ist). Ich hätte in der Funktion willSelectRowAtIndexPath sogar schon den Inhalt des Strings den ich eigentlich weitergeben will, aber der Return dieser Funktion lässt nur einen IndexPath zu und keinen String.

Oder muss ich dann in dem neuen ViewController mithilfe der ausgewählten Row wieder zurück auf die Zelle in der TableView greifen um bestimmte Inhalte daraus auszulesen? Also ein Outlet des TableView Controllers in den neuen ViewController ziehen und dann mit der Row Zelleninhalte auslesen. Wäre das der richtige Weg?edit: Die Möglichkeit besteht gar nicht, da man Outlets nicht in andere ViewController verknüpfen kann.
 
Zuletzt bearbeitet:

ecco55

Tokyo Rose
Registriert
26.10.14
Beiträge
71
Also die Methoden mit prepareForSegue ist die gängigste Methode und funktioniert auch in Swift 2. Probier es doch einfach aus und wenn es nicht geht, poste mal den Code und den error. Gruß , Daniel
 

belinea

deaktivierter Benutzer
Registriert
12.07.08
Beiträge
351
Ich habe wohl immer einen Fehler gemacht. Habe nochmal von vorne angefangen und jetzt geht das Tutorial.

BIs auf die Tatsache, dass in dem Video kein unwrapping gemacht wird XCode in dem Video trotzdem kein Fehler anzeigt:

Code aus dem Video der bei mir foglende Fehler brachte:

Fehler 1: UIViewController is not convertible to 'ViewTwo"; did you mean to use 'as!' to downcast?
Fehler 2: Value Optional type String? not unwrapped; did you mean to use '!" or '?'

Code:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        let DestViewController : ViewTwo = segue.destinationViewController as! ViewTwo
        DestViewController.seuguedData = "Beispielstring an neue View"
}


Ich habe getan was XCode mir vorgeschlagen hat und es dann so verwendet:
Code:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        let DestViewController : ViewTwo = segue.destinationViewController as! ViewTwo
        DestViewController.seuguedData = "Beispielstring an neue View"
}
Warum funktioniert es in dem Tutorial ohne ForceDowncast und ForceUnwrap? :confused:

Jetzt kann ich dieser Methode schonmal den Inhalt eines Textfeldes an einen neuen ViewController übergeben, aber nicht den Inhalt einer ausgewählten Zelle einer TableView.

Ist das berhaupt der richtige Lösungsnasatz mit prepareForSegue den Inhalt einer ausgewählten Zelle an einen neuenViewController übergeben zu wollen?
 

ecco55

Tokyo Rose
Registriert
26.10.14
Beiträge
71
Ja, das macht man normalerweise so. Das liegt daran weil bei Xcode 7 der Compiler verbessert wurde. Daher zeigt er dir jetzt immer die Methode mit downcast an, um spätere Fehler zu vermeiden.
 
  • Like
Reaktionen: belinea

belinea

deaktivierter Benutzer
Registriert
12.07.08
Beiträge
351
Bin jetzt zu einer Lösung gekommen.

- bevor der Segue startet speichere ich die Inhalte der TableView in einem globalen Array

- mit willSelectRowAtIndexPath weiss ich welche Auswahl der Nutzer in der TableView getroffen hat

- in der neuen View kann ich mit dieser Zahl die Stelle des globalen Arrays auslesen und habe den Inhalt der in der ausgewählten Zelle steht im neuen ViewController zur Verfügung
 

MacBerndMUC

deaktivierter Benutzer
Registriert
23.08.15
Beiträge
7
Das liest sich so wie: Ich weiss jetzt wie ich mit dem Auto nach München komme. Ich steige aus, schiebe es nach München und steige in München wieder ein. :)

Ich lade dir heute Abend ein Beispiel hoch wie man dein Problem löst.