Swift segue by identifer导致EXC_BAD_ACCESS

时间:2015-08-10 15:03:25

标签: ios swift segue

我有一个导航控制器作为初始视图。它转到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结束。

1 个答案:

答案 0 :(得分:0)

我对Swift并不是非常熟悉,但我知道在尝试比较字符串时会有一些问题。而不是使用:if (segue.identifier == "goNow")

~edit~ 在Interface Builder(storyboard)中为目标视图控制器设置类。

enter image description here

使用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运算符:

enter image description here