iOS SwiftUI - 视图在更改@AppStorage 值后关闭

iOS SwiftUI - View closes after changing @AppStorage value

我绝对是 iOS 开发的初学者,我想知道为什么没有其他人遇到这个问题,因为我找不到类似的问题。

开头声明:

@AppStorage("userid") var userid: Int = 0

然后在下面添加几行代码:

if(userid == 0){

    NavigationLink(destination: Login(), label: {
        Image(systemName: "person.circle.fill")
            .resizable()
            .aspectRatio(contentMode: .fit).frame(width: 32)
            .foregroundColor(Color(UIColor(named: "IconColor")!))
    })

}else{
    
    NavigationLink(destination: Login(), label: {
        Image(systemName: "person.circle.fill")
            .resizable()
            .aspectRatio(contentMode: .fit).frame(width: 32)
            .foregroundColor(Color.blue)
    })
    
}

Login() 视图中:

struct Login: View {
    @AppStorage("userid") var userid: Int = 0

    var body: some View{
        
        Button(action: {
                                    
            if(userid == 0){
                userid = 1
            }else{
                userid = 0
            }
            
        }) {
            Text("weird")
        }
    }
}

点击 weird 后,Login() 关闭,我看到图标颜色发生变化,这意味着 @AppStorage 值发生了变化。

但是为什么视图会在更改 @AppStorage 值时关闭??

它关闭是因为您的 NavigationLinkif 子句中。当条件改变时,link 的结果随 link.

一起消失

看起来你应该有一个 NavigationLink,在 foregroundColor:

中有一个条件语句
.foregroundColor(userid == 0 ?  Color(UIColor(named: "IconColor")!) : .blue)