2016-11-18 35 views
0

我剛開始學習迅速,我有一個問題。 我有兩個視圖控制器,我試圖從圖1發送一個字符串,視圖2.Xcode 8 - 意外發現無

這是我到目前爲止有:

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

計數是針對一個變量到目前爲止,這工作很好。 但是,如果我想自動更改視圖2中的標籤中的文本,如DestViewController.lb_ExLabem.text =「test」,則會發生致命錯誤「意外地發現零,同時展開可選值」。

讓我知道你是否有任何想法。

感謝

回答

1

在segue之前,你的插座是零(因爲視圖未加載)。

在DestViewController,你應該創建一個變量來存儲文本:

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

啓動它prepareForSegue:

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

最後在ViewController2,更改標籤文本當視圖加載(和你的插座不是零):

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

謝謝,想到這個旁路,並做到了我n viewDidLoad,我只是試圖找到一種不分配標籤的方式。 – Necro1992

0

錯誤只是意味着你的DestViewController.lb_ExLabem變量的值是nil。確保變量中有一個值,以免發生錯誤。

1

lb_ExLabem在你DestViewController,當你試圖將其設置這樣

DestViewController.lb_ExLabem.text = "test" 

nil。(由於風景被很多)

嘗試設置的lb_ExLabem值在viewWillAppear()DestViewController它會工作