首页 > 解决方案 > 执行自定义 segue 时,屏幕冻结并出现 EXC_BAD_ACCESS 消息

问题描述

我用 swift 构建了我的第一个应用程序并创建了一个自定义 segue,因此我的故事板的幻灯片从左到右呈现(滑动)。我从iOS Segue - Left to Right -获得的自定义 segue 类中的代码如下:

import UIKit
class SegueFromLeft: UIStoryboardSegue {
    override func perform() {
        let src = self.source
        let dst = self.destination

        src.view.superview?.insertSubview(dst.view, aboveSubview: src.view)
        dst.view.transform = CGAffineTransform(translationX: -src.view.frame.size.width, y: 0)

        UIView.animate(withDuration: 0.25,
                              delay: 0.0,
                            options: .curveEaseInOut,
                         animations: {
                                dst.view.transform = CGAffineTransform(translationX: 0, y: 0)
                                },
                        completion: { finished in
                                src.present(dst, animated: false, completion: nil)
                                    }
                        )
    }
}

我将故事板中的一些转场更改为这个自定义转场。将我的初始视图控制器连接到导航控制器的 segue 然后连接到另一个视图控制器正常运行。但是,当执行不同的 segue 时,会出现动画,但屏幕会立即冻结。

我的故事板的这张快照显示了功能和功能失调的segues

模拟器冻结后,在 SegueFromLeft 类中标记此行的错误:
src.present(dst, animated: false, completion: nil)

错误消息指出“线程 1:EXC_BAD_ACCESS (code=2, address=0x7ffee5c39fb8)”,我认为这与内存分配有关,但不知道如何修复它或为什么会发生。

非常感谢减轻此错误的所有帮助。

谢谢!

标签: iosswiftsegueexc-bad-accessuistoryboardsegue

解决方案


推荐阅读