gpt4 book ai didi

swift - 将 Binding 与 TextField SwiftUI 一起使用

转载 作者:行者123 更新时间:2023-12-02 06:13:01 25 4
gpt4 key购买 nike

我目前正在构建一个页面以将玩家信息添加到本地数据库。对于每个输入,我都有一个 TextField 集合,这些输入链接到播放器结构中的元素。

var body: some View {
VStack {
TextField("First Name", text: $player.FirstName)
.textFieldStyle(RoundedBorderTextFieldStyle())
TextField("Last Name", text: $player.LastName)
.textFieldStyle(RoundedBorderTextFieldStyle())
TextField("Email", text: $player.eMail)
.textFieldStyle(RoundedBorderTextFieldStyle())
TextField("Shirt Number", text: $player.ShirtNumber)
.textFieldStyle(RoundedBorderTextFieldStyle())
TextField("NickName", text: $player.NickName)
.textFieldStyle(RoundedBorderTextFieldStyle())
TextField("Height", text: $player.Height)
.textFieldStyle(RoundedBorderTextFieldStyle())
TextField("Weight", text: $player.Weight)
.textFieldStyle(RoundedBorderTextFieldStyle())

Button(action: {
submitPlayer(player: self.player)T
}) {
Text("Submit")
}

Spacer()
}
}

我的播放器结构是
struct Player: Hashable, Codable, Identifiable {
var id: Int
var FirstName: String
var LastName: String
var NickName: String
var eMail: String
var ShirtNumber: Int
var Height: Int
var Weight: Int
}

问题是 ShirtNumber、Height 和 Weight 都是 Int 值。当我将它们绑定(bind)到 TextField 时,我收到一条错误消息 Cannot convert value of type 'Binding<Int>' to expected argument type 'Binding<String>' .我所研究的有关 SwiftUI 的所有内容都表明,不可能有一个绑定(bind)了 Int 值的 TextField。

我的问题是,是否可以创建一个扩展 TextField 但仅允许 Int 输入并绑定(bind) Int 变量的新类,像这样?
struct IntTextField: TextField {

init(_ text: String, binding: Binding<Int>) {

}
}


到目前为止,我能找到的只是来自 this 的部分问题(仅接受 Int 输入)的答案。问题。我正在寻找一种将其与 Binding<Int> 相结合的方法.

谢谢您的帮助。

最佳答案

实际上,您可以使用 TextField 绑定(bind) manyTypes :

      @State var weight: Int = 0
var body: some View {


Group{
Text("\(weight)")
TextField("Weight", value: $weight, formatter: NumberFormatter())
}}

关于swift - 将 Binding<Int> 与 TextField SwiftUI 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59507471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com