ios - 通过标识符快速转场导致 EXC_BAD_ACCESS

标签 ios swift segue

我有一个导航 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 设置类。

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

关于ios - 通过标识符快速转场导致 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31922990/

相关文章:

ios - 交互式过渡 : Segue declaration

ios - 从堆栈为 ViewController 中的 NavigationController 准备 ForSegue

ios - 将 UICollectionView 单元格数据传递到不同的 ViewController 时出现 EXC_BAD_INSTRUCTION

ios - 如何快速将 double 转换为字节数组?

ios - 数据输入自定义 View 的 Swift 示例(自定义应用内键盘)

ios - 如何使用 Swift 4 在 ARKit 中旋转虚拟对象

ios - 如何从 Viewcontroller 转到 UITableViewCell

iphone - iCloud 会保留属于已删除应用程序的用户数据吗?

ios - 使用 XCTest 测试其中包含 `try-catch` 的方法

ios - 如何使用 Swift 将 "Done"按钮添加到 iOS 中的小键盘?