在SwiftUI中,我有两个文本字段。其中一个是String,另一个应该是Int。我希望文本字段在“保存”功能之前和之后都显示为空。
这就是我如何声明我的Int变量
@State private var newItemDays: Int?
这是文本字段
TextField("Task Title", text: $newItemTitle)
.padding()
.background(Color.white)
TextField("Days to Countdown", value: $newItemDays, formatter: NumberFormatter())
.keyboardType(.numberPad)
.padding()
.background(Color.white)
我的“确定”按钮可以保存它们。
Button("OK") {
if let days = newItemDays {
let newItem = CountdownItem(title: newItemTitle, daysLeft: days)
self.store.add(item: newItem)
newItemTitle = ""
newItemDays = 0
isTextFieldVisible = false
}
}
If语句总是返回false,即使我把integer放在那里。如果我从声明中删除optional并使其等于0,它可以工作,但这次我在文本字段中看到0(它应该显示为空)
有什么帮助吗?
2条答案
按热度按时间nvbavucw1#
您可以创建一个自定义的
NumberFormatter
并将zeroSymbol
设置为空String
:你的
TextField
变成:x8diyxa72#
使用
format:
代替formatter:
当
value
是Int?
时,它最初将显示为空。顺便说一下,你不应该在
body
内部初始化像NumberFormatter()
这样的对象,这是一个内存泄漏,最好坚持使用值类型。