【发布时间】:2021-12-06 00:45:05
【问题描述】:
我有一个带有“登录”按钮的主屏幕。单击该按钮,它将弹出一个登录屏幕。登录后,弹出屏幕将被关闭。主屏幕会显示“登录!”我有一个@State boolean var 监控按钮单击,另一个@EnvironmentObject 观察登录状态。如果登录成功,isAnon=false。然后弹出窗口将被关闭。但它现在不起作用。成功登录后,弹出屏幕仍然亮着。我怀疑声明 Binding<Bool>() 在 isAnon=false 时不会更新。这可能吗 ?我错过了哪里?非常感谢!这是代码
@EnvironmentObject var session: SessionStore
@State var isSignInClicked: Bool = false
var body: some View {
if session.isAnon{// if it is anonymous
Button("Please Sign in to view your activities") {
isSignInClicked.toggle()
}
.popover(isPresented: Binding<Bool>( get: { session.isAnon && isSignInClicked},set: {_ in })){
LogInView()
}
}
else{// if it's logged in
Text("Logged In!")
}
}
}
【问题讨论】:
-
我假设您的
isAnon属性是可计算的 - 这可能是原因,改为存储已发布的属性。 -
isAnon是@Published