Swift onDelete на вложенные массивы - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть следующий код:

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 здесь, как и раньше, у меня не было Списка как собственного компонента и всего в одной структуре, и это работало. Собственный компонент поможет уменьшить избыточность кода в будущем.

1 Ответ

2 голосов
/ 19 апреля 2020
List {
    Section{
        ForEach(self.idArray, id: \.self){ id in
            Text(id)
        }.onDelete(perform: deleteItem)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...