Ios (Swift)PrepareForSegue:致命错误:在展开可选值时意外发现nil
DetailViewController: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
@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”)时,该选项也不起作用。有什么想法吗?