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
值时关闭??
它关闭是因为您的 NavigationLink
在 if
子句中。当条件改变时,link 的结果随 link.
一起消失
看起来你应该有一个 NavigationLink
,在 foregroundColor
:
中有一个条件语句
.foregroundColor(userid == 0 ? Color(UIColor(named: "IconColor")!) : .blue)
我绝对是 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
值时关闭??
它关闭是因为您的 NavigationLink
在 if
子句中。当条件改变时,link 的结果随 link.
看起来你应该有一个 NavigationLink
,在 foregroundColor
:
.foregroundColor(userid == 0 ? Color(UIColor(named: "IconColor")!) : .blue)