SwiftUI go обратно в RootView в sceneWillEnterForeground SceneDelegate.swift - PullRequest
1 голос
/ 06 января 2020

мы пытаемся сбросить текущее представление на Root, если приложение войдет в Foreground.

Как мы можем сделать это в SwiftUI?

func sceneWillEnterForeground(_ scene: UIScene) {
      let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    let contentView = RootView().environment(\.managedObjectContext, context)
    if let windowScene = scene as? UIWindowScene {
        let singleOrder = SingleOrder()
        let window = UIWindow(windowScene: windowScene)
        window.rootViewController = UIHostingController(rootView: contentView.environmentObject(singleOrder))
        self.window = window
        window.makeKeyAndVisible()
    }
}

1 Ответ

1 голос
/ 06 января 2020

Нет "go back", но возможный подход состоит в том, чтобы воссоздать root view controller, переместив создание сгенерированного контента "по умолчанию" в другой метод делегата, как показано ниже ...

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    if let windowScene = scene as? UIWindowScene {
        let window = UIWindow(windowScene: windowScene)
        self.window = window
    }
}


func sceneWillEnterForeground(_ scene: UIScene) {
    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    let contentView = RootView().environment(\.managedObjectContext, context)
    let singleOrder = SingleOrder()
    window?.rootViewController = UIHostingController(rootView: contentView.environmentObject(singleOrder))
    window?.makeKeyAndVisible()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...