【发布时间】:2019-03-23 22:49:15
【问题描述】:
所以,我对我的应用程序的全新安装做了一个转义,它显示了一个对话框,要求用户设置应用程序需要的一些变量。然后,对于管理员用户,我可以选择清除应用缓存,然后重新启动应用,以便用户可以根据需要重做设置。
我使用下面的代码重新启动我的应用程序。
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,所以我想做所有可以转换的事情。
这就是我做segue的方式。
DispatchQueue.main.async {
self.performSegue(withIdentifier: "showSetup", sender: self)
}
【问题讨论】:
-
您首先使用什么代码来显示设置?问题可能就在那里