我有一个带有一个Textfield的ActionSheet。由于此文本字段具有formatter()属性,因此它不会每小时更新一次绑定变量。如果按“确定”按钮,则小时数的值仍为0。如果还有另一个文本字段,则单击它,然后按“确定”按钮,则小时数的值是正确的。但是此工作表中只有一个文本字段。
有没有办法使绑定变量的值保持更新?
struct AddClientSheet: View {
@EnvironmentObject var store: Store
@Environment(\.presentationMode) var presentationMode
@State private var hourly = 0.0
var body: some View {
Form {
Section(header: Text(“Kunde hinzufügen”).font(.title)) {
TextField(“Stundenrate”, value: $hourly, formatter: currencyFormatter())
}
Divider()
HStack {
Spacer()
Button(action: cancel) {
Text("Abbrechen")
}
Button(action: addClient) {
Text("Hinzufügen")
}
}
}
}
func currencyFormatter() -> NumberFormatter {
let f = NumberFormatter()
f.numberStyle = .currency
return f
}
func addClient() {
if hourly > 0{
//store the data
self.presentationMode.wrappedValue.dismiss()
}
}
func cancel() {
self.presentationMode.wrappedValue.dismiss()
}
}
答案 0 :(得分:0)
以下内容应该可以工作(在Xcode 11.2 / macOS 10.15.3上进行测试)
func addClient() {
NSApp.keyWindow?.makeFirstResponder(nil) // finish text edit
if hourly > 0 {
//store the data
print(">> hourly = \(hourly)")
self.presentationMode.wrappedValue.dismiss()
}
}