SwiftUI TextField 不接受整数/双精度。怎么做?
Posted
技术标签:
【中文标题】SwiftUI TextField 不接受整数/双精度。怎么做?【英文标题】:SwiftUI TextField does not accept integers/double. How to do so? 【发布时间】:2020-05-11 10:38:41 【问题描述】:我从 ios 应用开发开始,SwiftUI 是我的第一步。
我无法输入来自用户的整数或双精度值。
@State public var num1: Double = 0
TextField(" Enter a Number", text: $num1)
//Error: Cannot convert value of type 'Binding<Double>' to expected argument type 'Binding<String>'
请帮忙!
【问题讨论】:
这能回答你的问题吗? Use Binding<Int> with a TextField SwiftUI 【参考方案1】:SwiftUI 的组件期望有两种方式绑定到属性,使用类似@State 的东西,你在声明 num1 属性之前使用过 @State 吗?
你可以这样做:
将变量 num1 声明为
@State private var num1 = ""
你的TextField不能直接接受Integer或Double输入,你必须只接受String输入,并且可以在评估期间Typecast所需的值,如
print("Input taken is : \(Double(num1))")
【讨论】:
感谢您的回复!我已经在我的代码中应用了 State var。错误一直存在。 见 Praduyt ... 将 num1 类型设为 String,然后尝试编译 当然可以,因为它只接受字符串值。我使用 Double 的目的是进行 String 变量无法实现的算术运算。 您是否尝试过 TextField 的格式化程序参数,您必须将 DoubleFormatter() 作为 TextField 的格式化程序参数传递! 我也尝试了格式化程序参数,错误显示“调用中的额外参数'格式化程序'”。我刚刚尝试了 DoubleFormatter() 并且没有任何内容。【参考方案2】:实际上他们可以接受数字。只需为 TextField
尝试不同的初始化程序
TextField("placeholder", value: $yourValue, formatter: NumberFormatter())
【讨论】:
以上是关于SwiftUI TextField 不接受整数/双精度。怎么做?的主要内容,如果未能解决你的问题,请参考以下文章
如何创建只接受数字和单个点的 SwiftUI TextField?
为啥导航栏中的 SwiftUI TextField 一次只接受输入一个字符
如何将可观察对象发布的整数变量绑定到 SwiftUI 中的 textField?
SwiftUI TextField 绑定到 Double 不使用自定义格式化程序