Итак, я приступаю к новой установке моего приложения, в котором отображается диалоговое окно, в котором пользователю предлагается настроить некоторые переменные, необходимые приложению.Затем для пользователей-администраторов у меня есть возможность очистить кэш приложения, а затем перезапустить приложение, чтобы пользователь мог повторить настройку, если он этого хочет.
Я перезапускаю свое приложение, используя приведенный ниже код.
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)
}