2016-11-18 2 views
0

Ich habe gerade angefangen zu lernen schnell und ich habe eine Frage. ich zwei View-Controller haben, und ich versuche, eine Zeichenfolge aus Sicht 1 bis Ansicht senden 2.Xcode 8 - unerwartet gefunden Null

Dies ist, was ich bisher habe:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
{ 
if segue.identifier =="1" 
{ 
let DestViewControl = segue.destination as! ViewController2 
DestViewController.count = 9 
} 
} 

Count ist eine Variable in Sicht 2. Bis jetzt funktioniert das großartig. Wenn ich jedoch den Text in einer Beschriftung in Ansicht 2 automatisch ändern möchte, wie DestViewController.lb_ExLabem.text = "test", erhalte ich einen schwerwiegenden Fehler "unerwartet gefunden Null beim Entpacken eines optionalen Werts".

Lassen Sie mich wissen, wenn Sie irgendwelche Ideen haben.

Dank

Antwort

1

Vor dem Übergang, Sie Steckdose ist Null (da die Ansicht nicht geladen ist).

In DestViewController, sollten Sie eine Variable erstellen, den Text zu speichern:

class ViewController2{ 
    @IBOutlet weak var your_label: UILabel! 
    var label_tex=String() 
} 

es in prepareForSegue einleiten:

override func prepare(for segue: UIStoryboardSegue, sender: Any?){ 
    if segue.identifier =="1"{ 
     let DestViewControl=segue.destination as! ViewController2 
     DestViewController.label_tex="9" 
    } 
} 

Und schließlich in ViewController2, Ihr Label Text ändern, wenn die Ansicht geladen ist (und Ihre Steckdose nicht mehr nil):

override func viewWillAppear(_ animated: Bool){ 
    your_label.text=label_tex 
} 
+1

Danke, dachte an diese Umgehung und tat es i In ViewDidLoad habe ich nur versucht, einen Weg zu finden, ohne das Label zuzuweisen. – Necro1992

0

Der Fehler bedeutet einfach, dass der Wert Ihrer DestViewController.lb_ExLabem Variable nil ist. Stellen Sie sicher, dass die Variable einen Wert enthält, damit Sie keine Fehlermeldung erhalten.

1

lb_ExLabem ist in Ihrem DestViewController und wenn Sie es einrichten wie diese

DestViewController.lb_ExLabem.text = "test" 

der Wert nil versuchen. (Da die Ansicht viel geladen wird)

versuchen, den Wert von lb_ExLabem einstellen in viewWillAppear() von DestViewController wird es funktionieren

Verwandte Themen