gpt4 book ai didi

ios - SwiftUI使用步进器动态添加/删除TextField

转载 作者:行者123 更新时间:2023-12-01 16:11:47 24 4
gpt4 key购买 nike

大家好,我是SwiftUI的新手,我想找到一种巧妙的方法来添加或删除TextField,当按下斜线的加号或减号时。
我目前有

@State private var answers: [String] = ["", ""]
Stepper(onIncrement: {
if(numberOfAnswers < 10){
answers.append("")
numberOfAnswers += 1
}
},
onDecrement: {
if(numberOfAnswers > 2){
answers.removeLast()
numberOfAnswers -= 1
}
}) {
ForEach(answers.indices, id: \.self) { index in
TextField("Answer", text: $answers[index])
}
但是,这会在调用onDecrement时导致Index out of bounds异常。
我尝试使用 @State包装字符串以使其符合Identifiable(在struct声明中包含 ForEach(answers)),但是这会产生警告,指出该变量将不会更新。
我尝试过将解决方案发布到 here,但无济于事。
我不需要持久存储此结果,因为它将被传递到一个单独的函数,在按下按钮时进行API调用。
任何帮助,将不胜感激。

最佳答案

这是固定的复制代码。经过Xcode 11.4 / iOS 13.4测试

struct DemoView: View {
@State var numberOfAnswers = 2
@State private var answers: [String] = ["", ""]

var body: some View {
Stepper(onIncrement: {
if(self.numberOfAnswers < 10){
self.answers.append("")
self.numberOfAnswers += 1
}
},
onDecrement: {
if(self.numberOfAnswers > 2){
self.answers.removeLast()
self.numberOfAnswers -= 1
}
}) {
ForEach(Array(answers.enumerated()), id: \.0) { i, _ in
TextField("Answer", text: self.$answers[i])
}
}
}
}

关于ios - SwiftUI使用步进器动态添加/删除TextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62678962/

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