Я использую аналогичную технику c, чтобы показать представление входа в систему, а затем представление содержимого после входа пользователя. Вот способ, которым вы можете достичь этого:
Создать ObservableObject
class pageSettings: ObservableObject {
@Published var currentPage: String = "splash"
}
Измените свой SceneDelegate
Добавьте следующую строку после var window: UIWindow?
:
var pageSettings = PageSettings()
Затем замените вызов UIHostingController:
window.rootViewController = UIHostingController(rootView: contentView)
по этому вызову:
window.rootViewController = UIHostingController(rootView: contentView.environmentObject(pageSettings))
Используйте свой ObservableObject
Внутри MotherView
, добавьте это свойство:
@EnvironmentObject var pageSettings: PageSettings
Замените ваш тест следующим:
if pageSettings.currentPage == "splash"
Внутри SplashScreen
Вам также необходимо позвонить на EnvironmentObject
. Затем вы можете обновить значение currentPage
следующим образом (оно мгновенно переключит представление):
pageSettings.currentPage = "content"
Вы можете использовать объект среды для передачи данных между всеми вашими представлениями.