For a new SwiftUI iOS app, I do the following in the SceneDelegate
if let windowScene = scene as? UIWindowScene {
let window =
Very good answer LuLugaga, updated if you don't want to use @Observablebject so will not keep updating all the time, you can use Subject, as soon as you update token String, RootView will update.
struct RootView: View {
var loginViewModel: LoginViewModel = LoginViewModel()
@State var tokenString = ""
var body: some View {
Group {
tokenString.count > 0 ? AnyView(ContentView(model: playerViewModel)) : AnyView(LoginView(loginViewModel: loginViewModel))
}.onReceive(loginViewModel.tokenString) {
self.tokenString = $0
}
}
}
class LoginViewModel {
let tokenString = PassthroughSubject()
var token: String {
get { return "" }
set {
self.tokenString.send(newValue)
}
}