我正在做一个SwiftUI项目,我需要允许用户在TextField中输入十进制值。然而,SwiftUI的TextField的默认行为似乎只支持整数值。我想知道如何修改TextField以接受和显示十进制值。
我尝试使用格式化程序:numberFormatter()属性和keyboardType(.decimalPad)修饰符,但它似乎不会影响行为。TextField仍然只允许我输入整数。
下面是代码示例。项目列表如下所示。我想显示和编辑对象的price属性。
@State private var items: [Item] = [
Item(name: "Item 1", quantity: 10, price: 10.5),
Item(name: "Item 2", quantity: 5, price: 12.5),
Item(name: "Item 3", quantity: 3, price: 16000.3)
]
...
文本字段如下所示,
...
HStack {
TextField("Item Description", text: $items[index].name)
.multilineTextAlignment(.center)
TextField("Quantity", value: $items[index].quantity, formatter: NumberFormatter())
.multilineTextAlignment(.center)
TextField("Price", value: $items[index].price, formatter: NumberFormatter())
.keyboardType(.decimalPad)
.multilineTextAlignment(.center)
}
1条答案
按热度按时间gg0vcinb1#
你不应该像这样内联初始化对象:
formatter: NumberFormatter()
这是一个内存泄漏,要么使用静态对象,要么使用新的便利format: .currency
。ForEach
也不是for循环,你不应该使用$items[index].name
,因为它会崩溃。使用ForEach($items) { $item in
,然后使用text: $item.name
,Item
应该是Identifiable
。