【发布时间】:2020-08-31 05:35:11
【问题描述】:
抱歉措辞糟糕,但在 onAppear 中我正在更改状态变量,但是除非我在视图内的某处使用该状态变量,否则这不会重新渲染视图。
如果用户未登录,我会尝试弹出一个模式,但除非我将变量放入视图中,否则它不会弹出,如下所示
struct SearchView: View {
// Environment Variables
@EnvironmentObject var session: SessionStore
@State var sheetIsPresented: Bool = false
var body: some View {
NavigationView {
// Just having a line like this will cause it to work
if self.sheetIsPresented || !self.sheetIsPresented {}
}
.onAppear {
if self.session.userSession != nil {
self.sheetIsPresented = true
}
}
.sheet(isPresented: $sheetIsPresented) {
WelcomeSignInModal(sheetIsPresented: self.$sheetIsPresented)
}
}
}
【问题讨论】:
-
在这里工作正常。你确定
self.session.userSession != nil这个条件在你测试的那一刻是真的吗? -
@Asperi 是的。断点被击中,如果我在正文中输入 Text("(sheetIsPresented)") ,它将显示为 true 并弹出模式。
-
这里有同样的问题
标签: swiftui state swiftui-state