选择器选择更改 SwiftUI 中的 TextField

Picker choice changing the TextField in SwiftUI

我希望用户能够选择他们想要放入我的应用程序中的货币。但是使用此代码:

import SwiftUI

struct ContentView: View {
    
    @State private var amount = 0.0
    @State private var currency = "USD"
    
    let currencies = ["PLN", "USD", "EUR", "GBP", "JPY"]
    
    var body: some View {
            Form {
                
                Picker("Currency", selection: $currency) {
                    ForEach(currencies, id: \.self) {
                        Text([=10=])
                    }
                }
                
                TextField("Amount", value: $amount, format: .currency(code: currency))
                    .keyboardType(.decimalPad)
            }
            }
      
    }

使用 Picker 进行的货币选择不会更改 TextField 中的货币类型(它始终保持为美元,即使在删除后也是如此)。如何将选择的货币代码推送到 TextField?

不跟踪格式以更新 TextField,您可以根据格式参数使用 id 强制执行此操作,例如

 TextField("Amount", value: $amount, format: .currency(code: currency))
      .keyboardType(.decimalPad)
      .id(currency)                // << here !!

测试 Xcode 13.2 / iOS 15.2