Home > AI > IOS > SwiftUI >

Simple login condition view

import SwiftUI
import AVFoundation
import UIKit


struct ContentView: View {
    @EnvironmentObject var home: HomeGlobal
    
    var body: some View {
        NavigationView {
            NavigationLink(
                destination: home.userIsLogged == "login" ? LoginView().toAnyView() : UnLoginView().toAnyView(),
                label: {
                    Text("to next view")
                })
        }
    }
}


struct LoginView: View {
    @EnvironmentObject var home: HomeGlobal
    @Environment(\.presentationMode) var mode
    
    
    var body: some View {
       
        Text("login")
            .onTapGesture {
                mode.wrappedValue.dismiss()
                home.userIsLogged = "unlogin"
            }

    }
}


struct UnLoginView: View {
    @EnvironmentObject var home: HomeGlobal
    @Environment(\.presentationMode) var mode
    
    var body: some View {
        Text("unlogin")
            .onTapGesture {
                mode.wrappedValue.dismiss()
                home.userIsLogged = "login"
            }
    }
}


extension View  {
    func toAnyView() -> AnyView {
        AnyView(self)
    }
}

HomeGlobal.swift

class HomeGlobal: ObservableObject {
    // User Info
    @Published var userIsLogged: String = UserDefaults.standard.string(forKey: "userIsLogged") ?? "unlogin" {
        didSet {
            UserDefaults.standard.set(userIsLogged, forKey: "userIsLogged")
        }
    }
}

Leave a Reply