簡體   English   中英

SwiftUI TabView 不更新視圖

[英]SwiftUI TabView not updating View

我的問題是 TabView 沒有更新。

我想登錄,然后在同一個TabItem重新呈現另一個視圖(配置文件屏幕)而不是(登錄屏幕)。

只有在我殺死應用程序並重新打開它之后, TabView進入ProfileScreen

這是TabView代碼:

import SwiftUI

struct ContentView: View {
    
    @State var userToken: String = UserDefaults.standard.string(forKey: "UserToken") ?? ""
    var body: some View {
        TabView{
            HomeScreen(text: .constant("")).tabItem({ Image(systemName: "house") }).tag(0)
            Text("Cart").tabItem({ Image(systemName: "cart") }).tag(1)
            if userToken.isEmpty {
                LoginScreen().tabItem({ Image(systemName: "person") }).tag(2)
            } 
            else { 
                ProfileScreen().tabItem({ Image(systemName: "person") }).tag(2)
            }
        }
    }
    
}

我嘗試過的事情:

  • 將不同的@State 值傳遞給兩個屏幕
  • 在 LoginScreen 中呈現配置文件屏幕,但它呈現在 TabView 之上

如果您使用的是最新的 SwiftUI,請考慮使用 @AppStorage 而不是 @State:

@AppStorage("UserToken") var userToken: String = ""

如果您正在任何其他視圖中修改 userToken 的值,例如可能是 LoginView,您需要一種機制來通知內容視圖有關該更新的信息。

您可以考慮在此處使用 LocalNotifications 將更新發送到 ContentView,以便視圖在狀態更新時重新加載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM