相关疑难解决方法(0)

当数组缩小时,将 ForEach 循环与 Binding 结合使用会导致索引超出范围 (SwiftUI)

我有一个应用程序

  1. 单独提取数组的每个元素(通过索引)
  2. 然后将其绑定到可以使用该单个元素的结构(查看和编辑)

但是每次数组减小大小时,都会导致索引超出范围错误,这不是直接因为我的代码

据我所知,这是因为:在循环使用更改后的数组刷新后,它之前创建的视图并未完全删除,并且仍在尝试访问超出范围的部分。但这就是我自己能弄清楚的全部

这是我的示例代码:

import SwiftUI

struct test: View {
    @State var TextArray = ["A","B","C"]
    var body:some View {
        VStack{
        ForEach(TextArray.indices, id: \.self){index in
            //Text View
            TextView(text: self.$TextArray[index])
            .padding()
            }
            //Array modifying button
            Button(action: {
                self.TextArray = ["A","B"]
            }){
                Text(" Shrink array ")
                .padding()
            }
        }
    }
}

struct TextView:View {
    @Binding var text:String
    var body:some View {
    Text(text)
    }
}




#if DEBUG
struct test_Previews: PreviewProvider {
    static var previews: some View {
        test()
    }
}
#endif
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来满足上述两个要求而不会导致此问题或有任何方法可以规避此问题?任何回应都非常感谢。

swift swiftui

10
推荐指数
2
解决办法
2604
查看次数

标签 统计

swift ×1

swiftui ×1