Ios (Swift)PrepareForSegue:致命错误:在展开可选值时意外发现nil

Ios (Swift)PrepareForSegue:致命错误:在展开可选值时意外发现nil,ios,swift,label,segue,viewcontroller,Ios,Swift,Label,Segue,Viewcontroller,DetailViewController: @IBOutlet var selectedBundesland: UILabel! override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { if (segue.identifier == "BackToCalculator") { var vc:FirstViewController = segue.de

DetailViewController:

    @IBOutlet var selectedBundesland: UILabel!
    override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {


    if (segue.identifier == "BackToCalculator") {
        var vc:FirstViewController = segue.destinationViewController as FirstViewController
            vc.selectedBundesland.text = "Test"
    }
var textValue: String = ""
@IBOutlet weak var selectedBundesland: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()
    selectedBundesland.text = textValue
}
     if (segue.identifier == "BackToCalculator") {  
         var vc:FirstViewController = segue.destinationViewController as FirstViewController
         vc.textValue = "Test"
}
TableViewController:

    @IBOutlet var selectedBundesland: UILabel!
    override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {


    if (segue.identifier == "BackToCalculator") {
        var vc:FirstViewController = segue.destinationViewController as FirstViewController
            vc.selectedBundesland.text = "Test"
    }
var textValue: String = ""
@IBOutlet weak var selectedBundesland: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()
    selectedBundesland.text = textValue
}
     if (segue.identifier == "BackToCalculator") {  
         var vc:FirstViewController = segue.destinationViewController as FirstViewController
         vc.textValue = "Test"
}
IBOutlet已连接

错误:致命错误:在展开可选值时意外发现nil

我读了好几页关于期权的书,但我不知道问题的答案


您需要有关我的项目的更多信息吗?

您无法直接写入
prepareforsgue
中的
UILabel
,因为视图控制器尚未完全初始化。您需要创建另一个字符串属性来保存该值,并将其放入相应函数中的标签中,例如
视图将出现

详细视图控制器:

    @IBOutlet var selectedBundesland: UILabel!
    override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {


    if (segue.identifier == "BackToCalculator") {
        var vc:FirstViewController = segue.destinationViewController as FirstViewController
            vc.selectedBundesland.text = "Test"
    }
var textValue: String = ""
@IBOutlet weak var selectedBundesland: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()
    selectedBundesland.text = textValue
}
     if (segue.identifier == "BackToCalculator") {  
         var vc:FirstViewController = segue.destinationViewController as FirstViewController
         vc.textValue = "Test"
}
TableViewController:

    @IBOutlet var selectedBundesland: UILabel!
    override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {


    if (segue.identifier == "BackToCalculator") {
        var vc:FirstViewController = segue.destinationViewController as FirstViewController
            vc.selectedBundesland.text = "Test"
    }
var textValue: String = ""
@IBOutlet weak var selectedBundesland: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()
    selectedBundesland.text = textValue
}
     if (segue.identifier == "BackToCalculator") {  
         var vc:FirstViewController = segue.destinationViewController as FirstViewController
         vc.textValue = "Test"
}

我也遇到了同样的问题,我在新的视图控制器中定义了一个未连接到出口的字符串,并在prepareForSegue()方法中引用了它。在新的VC中,我使用标签outlet在viewDidLoad()方法中获取未连接字符串的值


Cheers最近遇到了这个问题。问题是,我已将segue从特定对象从当前视图控制器拖到目标视图控制器-如果要传递值,请不要这样做

而是将其从窗口顶部的黄色块拖动到目标视图控制器。然后适当地命名segue


然后使用
if(segue.identifier==“BackToCalculator”)
按当前状态分配值。一切都会好起来的

正确的解决方案是存储文本并在稍后的
viewdiload
或其他内容中将其附加到标签上,对于测试建议,您可以通过调用其
view
属性,强制
destinationViewController
从情节提要构建自身,从而绕过该问题,如:

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

     if (segue.identifier == "TestViewController") {
          var vc:FirstViewController = segue.destination as! TestViewController
          print(vc.view)
          vc.testLabel.text = "Hello World!"
     }
}

为Swift 3.0制作的带有爱的Swift 3.0

你的插座连接好了吗?是的,它是(如第一篇文章中提到的)负号是什么?在调试器中输入po vc可能重复。选择Bundesland“nil”我需要知道如何给它一个值。在通过vc.textValue=“Test”执行此操作时,在按下segueI get“致命错误:在展开可选值时意外发现nil”之前分配值(例如selectedBundesland.text=“Test”)时,该选项也不起作用。有什么想法吗?