2016-11-23 68 views
0

我正在學習iOS開發,讀一本書,名爲IOS9 App Development Essentials。我無法傳遞數據in-seg Swift3

當我嘗試'準備segue部分'時出現錯誤。我認爲代碼是從swift3改變的,我不知道如何弄清楚。

代碼以下

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let destination = segue.destinationViewController as! 
    Scene2ViewControllerdestination.labelText = "arrived from scene1" 
} 
+0

請加什麼錯誤的樣子! –

回答

0

您的代碼不工作,你應該使用的Scene2ViewControllerdestination

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    let destination = segue.destinationViewController as! Scene2ViewControllerdestination 
    destination.labelText = "arrived from scene1" 
} 
0

1實例)檢查SEGUE標識符(最佳實踐)
2)創建目標視圖控制器對象
3)使用對象通過所需數據

參考下面的代碼,供大家參考

override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    { 

     if segue.identifier == YOUR_SEGUE_IDENTIFIER 
     { 
      let objSummery : SummeryVC = segue.destination as! SummeryVC 
      objSummery.strUserID = YOUR_VALUE 
     } 

    } 
0
  1. 檢查,如果你使用了正確的SEGUE標識符。 Segue標識符可以在您的Main.storyboard文件中找到。 enter image description here
  2. 檢查您的viewController是否嵌入在UINavigationViewController中。

如果是,那麼使用類似這樣

override func prepare(for segue: UIStoryboardSegue, sender: Any?){ 
if segue.identifier == "your_identifier" { 
     let destinationVC = segue.destinationViewController as! UINavigationViewController 
     let sourceVC = destinationVC.viewControllers[0] as! Scene2ViewControllerdestination 
     sourceVC.labelText = "arrived from scene1" 
    } 
} 

如果沒有,那麼使用類似這樣

override func prepare(for segue: UIStoryboardSegue, sender: Any?){ 
if segue.identifier == "your_identifier" { 
let destinationVC = segue.destinationViewController as! Scene2ViewControllerdestination 
destinationVC.labelText = "arrived from scene1" 
} 

希望這有助於。 :)

0

在代碼段中有幾個問題。

  • 它的語法不正確的(並且在已經寫了這個答案,我注意到,有隻是一個換行符丟失,Scene2ViewControllerdestination之間,杜)。
  • destinationViewController更名爲destination
  • 像米拉普肯德利亞建議,檢查正確identifier(這將成爲重要的,當你有多個傳出賽段)。請注意,您必須爲您的segue設置一個標識符,如bhakti123所示。

全部放在一起,這應該工作:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "MeaningfulIdentifier", 
     let destination = segue.destination as? Scene2ViewController 
    { 
     destination.labelText = "arrived from scene1" 
    } 
}