gpt4 book ai didi

arrays - 更新 TextField 中的值并相应地更新其数组索引

转载 作者:行者123 更新时间:2023-12-04 07:23:53 26 4
gpt4 key购买 nike

我无法更新通过 for 每个循环显示的数组中的值。这些值显示在文本字段中。
有问题的代码

struct EditItemView: View {


@State var recipeStep: [String]
@State var stepInfo: String = ""
@State var textFieldCount: Int = 1
@State var stepNumber: [Int]
@State var recordsCount = 2

var body: some View {
//a bunch of code between here and the list, does not apply
VStack {
List {
ForEach(0..<recipeStep.count, id: \.self) { index in
HStack {
Text(String(stepNumber[index]) + ".").bold()
EditorViewEdit(container: self.$recipeStep, index: index, text: recipeStep[index])
}
}.onDelete { (indexSet) in
stepNumber.remove(atOffsets: indexSet)
recipeStep.remove(atOffsets: indexSet)
}
ForEach 循环中的以下代码段是我用来使列表中的每个文本字段可编辑的代码(因为我不知道有任何其他方法可以使文本字段在列表中工作):
EditorViewEdit(container: self.$recipeStep, index: index, text: recipeStep[index])
上面代码中引用的结构体可以在下面看到:
struct EditorViewEdit : View {
var container: Binding<[String]>
var index: Int

@State var text: String

var body: some View {
TextField("", text: self.$text, onCommit: {
self.container.wrappedValue[self.index] = self.text
})
}
}
问题
如何在 foreach 循环中更改文本字段并使其值在 @State var recipeStep: [String] 中会相应更新吗?例如,我在 for each 循环中编辑第一个 TextField - 如何使用新值更新数组中的索引 0?

最佳答案

有很多方法可以在 foreach 循环中更改文本字段
并在recipeStep中有它的值(value)。尝试这样的事情:

import SwiftUI

@main
struct TestApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}

struct ContentView: View {
@State var recipeStep = ["recipe step 1","recipe step 2","recipe step 3"]
var body: some View {
VStack {
EditItemView(recipeStep: $recipeStep)
Text(recipeStep.description)
}
}
}

struct EditItemView: View {
@Binding var recipeStep: [String]

var body: some View {
VStack {
List {
ForEach(recipeStep.indices, id: \.self) { index in
HStack {
Text(String(index) + ".").bold().foregroundColor(.red)
TextField("Recipe step", text: $recipeStep[index])
}
}.onDelete { indexSet in
recipeStep.remove(atOffsets: indexSet)
}
}
}
}
}

关于arrays - 更新 TextField 中的值并相应地更新其数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68323683/

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