我有一个导航控制器作为初始视图。它转到VC1,它有3个按钮,每个按钮都绑定到一个动作,该动作在调用performSegueWithIdentifier("goNow", sender: nil)
之前在VC2中设置参数。我也在我的VC1中有这个。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "goNow") {
if let sView: SViewController = segue.destinationViewController as? SViewController {
sView.action = self.action
}
}
}
调用时,VC2会显示几秒钟,并以EXC_BAD_ACCESS
结束。
答案 0 :(得分:0)
我对Swift并不是非常熟悉,但我知道在尝试比较字符串时会有一些问题。而不是使用:if (segue.identifier == "goNow")
~edit~ 在Interface Builder(storyboard)中为目标视图控制器设置类。
使用segue.identifier
值创建一个字符串变量,然后比较两者:
let segueID = String(segue.identifier)
let segueToOpen = "goNow"
let isEqual = (segueID == segueToOpen)
// Now your if statement
if isEqual {
// ...
}
另外,您可能需要考虑将下一个if语句中的逻辑分开来读取类似的内容:
let sView: SViewController = segue.destinationViewController
以下是RayWenderlick网站的摘录并使用as
运算符: