我的iOS应用有两个ViewControllers(VC)。当我按下VC A上的按钮时,它会显示VC B.当我按下VC B上的按钮时,它会显示VC A.这很好。但是,事实证明,每次切换时都会创建每个视图控制器的新实例,这会搞砸我的应用程序的一些功能。我试图改变它。
正如您在下面所看到的,如果一个VC已经存在,我只会创建一个新的VC实例。我在VC B中保存VC A,反之亦然。
VC A文件:
var vcB: BViewController?
func leftPresentVC() {
if(vcB == nil) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
vcB = storyboard.instantiateViewController(withIdentifier: "vcB") as! BViewController
vcB?.transitioningDelegate = transition
vcB?.modalPresentationStyle = .custom
vcB?.vcA = self
}
present(vcB!, animated: true, completion: {})
}
VC B档案:
var vcA: AViewController?
func rightPresentVC() {
if(vcA == nil) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
vcA = storyboard.instantiateViewController(withIdentifier: "vcA") as! AViewController
vcA?.transitioningDelegate = transition
vcA?.modalPresentationStyle = .custom
}
if let vcA = vcA {
present(vcA, animated: true, completion: {})
}
}
按下按钮时会调用leftPresentVC和rightPresentVC函数。
所以问题是这个。当我启动应用程序时,VC A按计划加载。我单击一个按钮,VC B按计划显示。然后我单击一个按钮转到VC A,应用程序崩溃。我在VC的present(vcA, animated: true, completion: {})
中收到错误,说EXC_BAD_ACCESS,它给出了一个内存地址。知道问题可能是什么?
答案 0 :(得分:1)
为什么你要同时展示一个。
刚刚解雇VCb,你会得到VCa
dismiss(true, completion: nil)