因此,我对应用程序的全新安装进行了检查,显示了一个对话框,要求用户设置应用程序所需的一些变量。然后,对于管理员用户,我可以选择清除应用程序缓存,然后重新启动应用程序,以便用户可以根据需要重做设置。
我使用以下代码重新启动我的应用。
func restartApplication () {
let viewController = SomeViewController()
let navCtrl = UINavigationController(rootViewController: viewController)
guard
let window = UIApplication.shared.keyWindow,
let rootViewController = window.rootViewController
else {
return
}
navCtrl.view.frame = rootViewController.view.frame
navCtrl.view.layoutIfNeeded()
UIView.transition(with: window, duration: 0.3, options: .transitionCrossDissolve, animations: {
window.rootViewController = navCtrl
})
}
有效。但是当应用到达viewDidAppear()
并需要显示我的对话框时,该应用崩溃,提示
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
'Receiver (<AppName.SomeViewController: 0x150dda00>) has no segue with identifier 'showSetup''
我认为我为重新启动弄乱了一些东西,或者我仍然需要做一些工作才能使它工作,但是我不知道这是什么。
我目前正在将android应用转换为iOS,因此我想做所有可以转换的事情。
这就是我的任务。
DispatchQueue.main.async {
self.performSegue(withIdentifier: "showSetup", sender: self)
}
答案 0 :(得分:0)
由于“重新启动”的视图控制器不是来自情节提要,因此对segue(依赖情节提要)的任何引用都将失败。
您需要以下内容:
images