我有这个简单的 SwiftUI 应用,但它的行为不符合预期。
该应用程序由一个仅显示一些 hello 消息的视图和一个触发工作表呈现的工具栏按钮组成。在演示之前,将 @State
属性 (tmpEvent
) 设置为所需值。
当第一次显示工作表时,它不显示新分配的值,而是显示初始化值。在工作表的所有后续演示中,它都按预期工作。
我在这里遗漏了什么?
import SwiftUI
struct ContentView: View {
@State private var presentingSheet = false
@State private var tmpEvent = Event(desc: "default Event")
@State private var counter = 0
var body: some View {
NavigationView {
VStack {
Text("Hello Test App")
}
.toolbar {
Button(action: showSheet) {
Label("Open sheet", systemImage: "plus")
}
}
.sheet(
isPresented: $presentingSheet,
onDismiss: { tmpEvent = Event(desc: "onDismiss Event") }
) {
NavigationView {
VStack {
Text("event: \(tmpEvent.desc)")
}
.navigationBarTitleDisplayMode(.inline)
.navigationTitle(tmpEvent.desc)
.toolbar {
Button(action: { presentingSheet = false }) {
Label("Close", systemImage: "xmark")
}
}
}
}
}
}
private func showSheet() {
counter += 1
tmpEvent = Event(desc: "new Event \(counter)")
presentingSheet = true
}
}
Event
结构struct Event {
var desc: String
}
如果您想使用示例,可以从 GitHub 下载。