Swift onDelete on nested Arrays

问题描述 投票:0回答:1

我有以下代码:

struct FirstView: View {

    @State var idArray: Array<String> = ["a", "b", "c"]

    var body: some View {
         SecondView(idArray: $idArray)
    }
}

struct SecondView: View {

    @Binding var idArray:Array<String>

    var body: some View {
        List(){
            Section{
                ForEach(0..<self. idArray.count, id: \.self){id in
                    Text(self.idArray[id])
                }.onDelete(perform: deleteItem)
            }
        }
    }

    func deleteItem(at offsets: IndexSet) {
         self.idArray.remove(atOffsets: offsets)
    }
}

问题:执行删除时,它不会删除正确的元素,而是最后一个元素。

[我认为@Binding是这里的问题,就像以前,我没有将List作为自己的组件并将所有内容都放在一个结构中并且它可以正常工作。自己的组件将有助于减少将来的代码冗余。

swift swiftui
1个回答
1
投票
List {
    Section{
        ForEach(self.idArray, id: \.self){ id in
            Text(id)
        }.onDelete(perform: deleteItem)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.