gpt4 book ai didi

swiftui - 登录后更新 TabView 并移至 Home View

转载 作者:行者123 更新时间:2023-12-04 13:14:29 31 4
gpt4 key购买 nike

我在 ContentView 中有以下 TabView。对于 onAppear,它工作正常。但是,我还尝试在用户从 LoginView 登录后重新加载选项卡并移至主页。

以下是ContentView的代码

//  ContentView.swift
// Matjri
//

//

import SwiftUI

struct ContentView: View {
@ObservedObject var user = User()

var body: some View {
HStack{
if (user.tokenIsActive) {
TabView {
HomeView()
.tabItem {
VStack {
Image(systemName: "house")
Text("Home")
}
}.tag(0)

UserPostsView()
.tabItem {
VStack {
Image(systemName: "person.fill")
Text("Me")
}
}.tag(1)

NewPostView()
.tabItem {
VStack {
Image(systemName: "plus")
Text("Add")
}
}.tag(2)
SearchView()
.tabItem {
VStack{
Image(systemName: "magnifyingglass")
Text("Search")
}
}.tag(3)
}
} else {
TabView {
HomeView()
.tabItem {
VStack {
Image(systemName: "house")
Text("Home")
}
}.tag(0)

LoginView()
.tabItem {
VStack {
Image(systemName: "person.fill")
Text("Me")
}
}.tag(1)

SearchView()
.tabItem{
VStack{
Image(systemName: "magnifyingglass")
Text("Search")
}
}.tag(2)
}
}

}
.onAppear() {
self.checkLoginValidity()
}
}

func checkLoginValidity() {

let userLogged = UserDefaults.standard.object(forKey: "userIsLogged") as? Bool ?? false

if (userLogged) {
let existinLogin = UserDefaults.standard.object(forKey: "loginExpiry") as! Date

if (existinLogin > Date().addingTimeInterval(86400 * 2)){
self.user.tokenIsActive = true

} else {
self.user.tokenIsActive = false
}
} else {
self.user.tokenIsActive = false
}
}
}

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

当用户从 LoginView 登录时,我将 tokenIsActive 设置为 true

struct LoginView: View {

@ObservedObject var user = User()

........

//Login successful

self.user.tokenIsActive = true

TabView 没有更新。我怎样才能做到这一点,并在登录后将用户移动到主视图。

最佳答案

ContentViewLoginView 中使用了不同的 User() 实例。这是一个解决方案:

struct LoginView: View {

@ObservedObject var user: User // << only declare

这里

LoginView(user: self.user) // << inject own user instance
.tabItem {
VStack {
Image(systemName: "person.fill")
Text("Me")
}
}.tag(1)

关于swiftui - 登录后更新 TabView 并移至 Home View,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61591474/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com