我有一个导航 Controller 作为初始 View 。它转到有 3 个按钮的 VC1,每个按钮都与一个操作绑定(bind),该操作在调用 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
终止。
最佳答案
我对 Swift 不是很熟悉,但我知道在尝试比较字符串时会遇到一些问题。而不是使用:if (segue.identifier == "goNow")
~编辑~ 在 Interface Builder( Storyboard)中为目标 View Controller 设置类。
使用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
运算符:
关于ios - 通过标识符快速转场导致 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31922990/