2016-11-23 94 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" 
    } 
}