我正在录制录音APP。
我尝试在我的第一个录制视图控制器中添加导航控制器,然后使用以下函数准备将文件名数组传递给第二个视图控制器:
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)
有人有任何建议吗? 谢谢!
答案 0 :(得分:0)
请勿在{{1}}内拨打present(_:animated:completion:)
。
prepare(for segue:)
,以便您准备数据以便发送到目标viewcontroller,或者在执行segue之前执行您需要的任何其他计算。需要在Storyboard中设置segue,它将自动调用,或者如果是手动调用,则需要使用prepare(for segue)
调用它,一旦执行此操作,系统将调用perform(segue)
为了你。你可以看到为什么调用另一个导航函数证明是有问题的,因为你试图使用两种不同的方法(segue和present)导航到另一个viewcontroller。
如果您还没有在故事板中设置segue,那么您还需要这样做,因为如果没有设置,prepare(for segue)
将是let controller = segue.destination as? MainViewController
。
在Storyboard中设置segue后,这就是你的功能的样子:
nil
答案 1 :(得分:0)
您不应该尝试在此方法中呈现VC,它只是您在segue呈现之前配置目标VC的地方
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':common-util')
// common-util is an Android module, which references other Android
// methods such as Log.d, android.util class methods, etc.
}