Учитывая, что вы, вероятно, не захотите возвращаться к заставке после того, как вы уже находитесь на LoginScreen
, я бы предложил другой подход и, в частности, изменил rootView
UIHostingController
в SceneDelegate
,
Если вы хотите перейти к следующему экрану, вы можете использовать следующий рефакторинг вашего кода:
struct SplashScreen: View {
@State private var isActive = false
let login = LoginScreen()
let color = Color.init("black_1")
var body: some View {
NavigationView {
VStack(alignment: .center) {
Image("logo")
NavigationLink(destination: login,
isActive: $isActive,
label: { EmptyView() })
}
.background(color)
.onAppear(perform: {
self.gotoLoginScreen(time: 2.5)
})
}
}
func gotoLoginScreen(time: Double) {
DispatchQueue.main.asyncAfter(deadline: .now() + Double(time)) {
self.isActive = true
}
}
}