【发布时间】:2020-04-17 19:41:50
【问题描述】:
我目前正在构建一个页面以将玩家信息添加到本地数据库。对于每个输入,我都有一个 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 值。当我将它们绑定到 TextField 时,我收到一条错误消息 Cannot convert value of type 'Binding<Int>' to expected argument type 'Binding<String>'。我所研究的关于 SwiftUI 的所有内容都表明,不可能有一个绑定了 Int 值的 TextField。
我的问题是,是否可以创建一个扩展 TextField 但仅允许 Int 输入并绑定 Int 变量的新类,像这样?
struct IntTextField: TextField {
init(_ text: String, binding: Binding<Int>) {
}
}
到目前为止,我能找到的只是来自this 问题的部分问题的答案(仅接受 Int 输入)。我正在寻找一种将其与Binding<Int> 结合起来的方法。
感谢您的帮助。
【问题讨论】: