You can try something like this, at least is it working for me.
import SwiftUI
enum Page {
case LoginView
case MainView
}
class PageManager: ObservableObject{
@Published var page: Page
init(page: Page) {
self.page = page
}
}
@main
struct RandomApp: App {
@ObservedObject var pageManager = PageManager(page: .LoginView)
var body: some Scene {
WindowGroup {
switch(pageManager.page){
case Page.LoginView:
LoginView()
.environmentObject(pageManager)
case Page.MainView:
MainView()
.environmentObject(pageManager)
}
}
}
}
In any of your views: pageManager.page = .MainView
struct LoginView: View {
@EnvironmentObject var pageManager: PageManager
...
func login(username: String, password: String) -> Bool {
// In here your check to see if username/password are valid
if username == "x", password == "x" {
pageManager.page = .MainView
return true
}
return false
}
}
Topic:
UI Frameworks
SubTopic:
SwiftUI
Tags: