在 SwiftUI 中的 forEach 期间将文本字段输入添加到数组
Posted
技术标签:
【中文标题】在 SwiftUI 中的 forEach 期间将文本字段输入添加到数组【英文标题】:Adding textfield input to array during forEach in SwiftUI 【发布时间】:2021-05-10 19:25:59 【问题描述】:我是 Swift / SwiftUI 的新手,并尝试在 foreach 期间将文本字段值存储在数组中。但是我遇到了 Thread 1: Fatal error: Index out of range 消息。存储值应该发生在视图(视图模型)之外还是可以在视图内完成??
struct OrderView: View
@Binding var groupsize: Int
@State var nameArray = [String]()
var body: some View
VStack
ForEach(0 ..< groupsize) index in
TextField("Insert name", text: $nameArray[index])
【问题讨论】:
为什么不用nameArray.count
替换groupsize
?
这是因为我要存储的值的数量取决于来自上一个视图的groupsize
变量。
groupsize
> nameArray.count
这是这里的问题
做ForEach(0 ..< groupsize - 1)
,但正如@George_E 提到的,这可能不是一个好的设计选择
@aheze 这不起作用
【参考方案1】:
听取 cmets 的所有好建议,您可以尝试以下方法:
struct OrderView: View
@Binding var groupsize: Int
@State var nameArray = [String]()
var body: some View
VStack
if nameArray.count > 0
ForEach(0 ..< groupsize) index in
TextField("Insert name", text: $nameArray[index])
.onAppear(perform:
if groupsize > 0
nameArray = [String](repeating: "", count: groupsize)
)
【讨论】:
以上是关于在 SwiftUI 中的 forEach 期间将文本字段输入添加到数组的主要内容,如果未能解决你的问题,请参考以下文章