尝试使用destinationViewController执行变量赋值时出错。
错误信息是这样的: 线程1:EXC_BREAKPOINT(代码= EXC_I386_BPT,子代码= 0x0)
这在我的prepareForSegue函数中。
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if segue.identifier == "LoginSegue"{
let vc = segue.destinationViewController as LoggedInViewController
vc.email = emailTextfield.text
}
}
在另一个文件中,它看起来像这样。
var email: String?
位于顶部。 然后这个:
override func viewDidLoad() {
super.viewDidLoad()
println("Email is:")
println(email)
println("Email was")
}
但我从未进入第二档。
将vc = segue.destinationViewController作为标记为错误的LoggedInViewController行。
两个swift文件都连接到导航控制器。
我不知道你还需要什么,但我当然会发布你需要理解的所有代码!
谢谢!
答案 0 :(得分:28)
在你的情况下,目标控制器是导航控制器而不是你的 LoggedInViewController ,所以segue.destinationViewController as LoggedInViewController
是一个错误,因此它正在崩溃。
试试这个
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if segue.identifier == "LoginSegue"{
let navigationController = segue.destinationViewController as UINavigationController
let vc = navigationController.topViewController as LoggedInViewController
vc.email = emailTextfield.text
}
}
答案 1 :(得分:2)
如果有人来这里,因为这是EXC_BREAKPOINT的第一次点击:
对我来说,这个非常有说服力的异常是因为fatal error: unexpectedly found nil while unwrapping an Optional value
因为在初始化之前使用了IBOutlet而发生的。