2016-11-28 8 views
-1

Ich habe keine genaue Lösung für mein Problem gefunden. Ich muss Daten von einem Ansichtscontroller an einen anderen Ansichtscontroller übergeben. Das Problem ist, dass nach dem Übergang die übergebenen String-Daten nicht im Label erscheinen.Daten vom View-Controller an einen anderen View-Controller übergeben

func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject) { 
    if (segue.identifier == "segue1") { 
     if let destination = segue.destination as? ResultsViewController { 
      destination.name = correctslabel.text! 

Der zweite Controller: Es gibt nur Variable und „name“ und ein UIlabel, die nicht die übergebenen Daten nicht zeigen.

import UIKit 

class ResultsViewController: UIViewController { 

    @IBOutlet var namelabel: UILabel! 
    var name = "" 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     name = namelabel.text! 
    } 
}  

Ich habe viele Möglichkeiten ausprobiert, aber keiner von ihnen hat funktioniert. Danke

Endlich funktionierte für mich, um eine Übersteuerung func davon zu machen, was bedeutete, dass ich den Absender von AnyObject Any ändern musste ?.

Antwort

0

Haben Sie das nicht versucht?

// ResultsViewController.swift 
override func viewDidLoad() { 
    super.viewDidLoad() 
    namelabel.text = name 
} 
+0

Es zeigt einen Fehler: Wert des optionalen Typs "Zeichenfolge" nicht ausgepackt –

+0

@TobyV. Im geposteten Code deklarieren Sie den Namen -var auf diese Weise 'var name =" "'. Was bedeutet, dass es nichts zu entpacken gibt, es ist bereits nicht optional. Ist es möglich, dass Sie die Deklaration vor kurzem in "var name: String" geändert haben? = "" '? –

+0

Ich benutze dort namelabel.text = name und das namelabel.text ist optional, also könnte es das Problem sein. Weißt du zufällig, wie man es nicht fakultativ macht? Vielen Dank –

Verwandte Themen