0
我試圖從場景1中設置場景2中的標籤文本。我寫了下面的代碼。在場景之間傳遞數據
// original viewController (scene 1)
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let destination = segue.destinationViewController as Scene2ViewController
destination.scene2Label.text = "Arrived from scene 1"
} //scene2Label is a Label in Scene2ViewController
這會拋出一個錯誤:在解包可選值時意外發現nil。這是指向
destination.scene2Label.text = "Arrived from scene 1"
這怎麼可能?我認爲我將scene2Label的文本值設置爲「從場景1到達」。
在另一方面,這此代碼的工作就好了:
class ViewController: UIViewController {
@IBOutlet weak var scene1Label: UILabel!
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let destination = segue.destinationViewController as Scene2ViewController
destination.labelText = "Arrived from scene 1"
}
}
class Scene2ViewController: UIViewController {
@IBOutlet weak var scene2Label: UILabel!
var labelText : String?
override func viewDidLoad() {
super.viewDidLoad()
scene2Label.text = labelText
}
}
爲什麼?