我正在使用录音应用程序。
我尝试在我的第一个录制视图控制器中添加导航控制器,然后可以使用以下函数准备将文件名数组传递给第二个视图控制器:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let controller = segue.destination as? MainViewController
controller?.recordArray = recordingArray
self.present(controller!, animated: true, completion: nil)
}
但是,当在模拟器中运行时,第二个控制器中的导航栏消失了,Xcode 弹出警告
线程 1:EXC_BAD_ACCESS(代码=2,地址=0x7fff51edfff8)
有没有人有任何建议?谢谢!
永远不要present(_:animated:completion:)
在里面打电话prepare(for segue:)
。
prepare(for segue)
在 segue 即将发生之前由系统自动调用,让您准备发送到目标视图控制器的数据或在执行 segue 之前执行任何其他计算。需要在 Storyboard 中设置一个 segue,它将被自动调用,或者如果它是手动 segue,您需要使用它来调用它perform(segue)
,一旦您这样做,系统就会呼叫prepare(for segue)
您。您可以看到为什么调用另一个导航函数被证明是有问题的,因为您正在尝试使用两种不同的方法(segue 和present)导航到另一个视图控制器。
如果您还没有在 Storyboard 中设置 segue,那么您也需要这样做,因为如果没有设置,let controller = segue.destination as? MainViewController
它将是nil
.
在 Storyboard 中设置 segue 后,您的函数应如下所示:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let controller = segue.destination as? MainViewController {
controller.recordArray = recordingArray
self.present(controller, animated: true, completion: nil)
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句