SwiftUI macOS currencyFormatter 不更新绑定变量
Posted
技术标签:
【中文标题】SwiftUI macOS currencyFormatter 不更新绑定变量【英文标题】:SwiftUI macOS currencyFormatter does not update binding variable 【发布时间】:2020-02-26 11:49:22 【问题描述】:我有一个包含一个文本字段的 ActionSheet。由于此 Textfield 具有 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()
【问题讨论】:
但我正在开发一个 macOS 应用程序 【参考方案1】:以下应该可以工作(使用 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()
【讨论】:
以上是关于SwiftUI macOS currencyFormatter 不更新绑定变量的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI TextField (MacOS) 的奇怪行为
(SwiftUI, MacOS 11.0) 如何在 SecureTextFeild 中检测焦点?