ios 如何在SwiftUI TextField中显示和编辑十进制值?

envsm3lx  于 2023-06-25  发布在  iOS
关注(0)|答案(1)|浏览(135)

我正在做一个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)
                    
                }
gg0vcinb

gg0vcinb1#

你不应该像这样内联初始化对象:formatter: NumberFormatter()这是一个内存泄漏,要么使用静态对象,要么使用新的便利format: .currencyForEach也不是for循环,你不应该使用$items[index].name,因为它会崩溃。使用ForEach($items) { $item in,然后使用text: $item.nameItem应该是Identifiable

相关问题