Сцена восстановления состояния контроллера модального представления

Я пытаюсь восстановить модальный 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


person dgee4    schedule 18.12.2019    source источник
comment
Вам не нужно разворачивать контроллер представления.   -  person Chiara    schedule 18.12.2019
comment
привет @ dgee4. Удалось ли вам решить эту проблему? У меня похожая проблема.   -  person SAHM    schedule 25.05.2020


Ответы (1)


Это происходит, когда вы пытаетесь загрузить новый UIViewController до того, как тот, который его представляет, завершит анимацию. Вы должны просто вызвать презентацию асинхронно в основном потоке:

DispatchQueue.main.async { navigationController.present(splitController, animated: false, completion: nil) }

person Chiara    schedule 18.12.2019