Сцена восстановления состояния контроллера модального представленияDelegate
Я пытаюсь восстановить модальный Viewcontroller
изнутри SceneDelegate
.
Однако этот код не позволяет отображать контроллер модального представления и вызывает следующую ошибку: "Unbalanced calls to begin/end appearance transitions for...".
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
if let userActivity = connectionOptions.userActivities.first ?? session.stateRestorationActivity {
// Restoring Data and Modal VC:
let storyboard = UIStoryboard(name: "Main", bundle: .main)
let splitController = storyboard.instantiateViewController(withIdentifier: "splitVC")
if let navigationController = window?.rootViewController as? UINavigationController {
splitController.modalPresentationStyle = .fullScreen
self.window?.makeKeyAndVisible()
navigationController.present(splitController, animated: false, completion: nil)
}
} else {
print("No User Activity")
// Loads Initial VC
}
}
Любые идеи, как это исправить и представить модальный Viewcontroller
от SceneDelegate
1 ответ
Это происходит, когда вы пытаетесь загрузить новый UIViewController до того, как тот, который его представляет, завершит анимацию. Вы должны просто асинхронно вызвать презентацию в основном потоке:
DispatchQueue.main.async { navigationController.present(splitController, animated: false, completion: nil) }