SwiftUI 工作表在首次出现时不会访问状态变量的最新值
Posted
技术标签:
【中文标题】SwiftUI 工作表在首次出现时不会访问状态变量的最新值【英文标题】:SwiftUI sheet doesn't access the latest value of state variables on first appearance 【发布时间】:2020-10-27 09:33:29 【问题描述】:第一次显示工作表时,状态变量似乎没有正确更新。
例如使用此代码:
import SwiftUI
struct DemoView: View
@State var showDetails: Bool = false
var body: some View
VStack
Button(action:
showDetails = true
)
Text("Show sheet")
.sheet(isPresented: $showDetails)
VStack
Text("showDetails: \(showDetails ? "yes" : "no")")
struct DemoView_Previews: PreviewProvider
static var previews: some View
DemoView()
这将在第一次点击时显示“否”,在第二次点击时显示“是”,如下所示:
我错过了什么吗?如何确保工作表视图正确读取我的状态变量?
【问题讨论】:
【参考方案1】:您会在工作表创建时间看到价值。如果要跟踪父视图状态,请创建绑定到该状态的工作表子视图,如下所示。绑定会在子视图出现时更新子视图。
使用 Xcode 12 / ios 14 测试
struct DemoView: View
@State var showDetails: Bool = false
var body: some View
VStack
Button(action:
showDetails = true
)
Text("Show sheet")
.sheet(isPresented: $showDetails)
SheetDetailView(flag: $showDetails)
struct SheetDetailView: View
@Binding var flag: Bool
var body: some View
VStack
Text("showDetails: \(flag ? "yes" : "no")")
【讨论】:
以上是关于SwiftUI 工作表在首次出现时不会访问状态变量的最新值的主要内容,如果未能解决你的问题,请参考以下文章