SwiftUI에서는 그냥 Swift의 ForEach와는 다르게 뷰와 관련된 ForEach이다. 리스트(=테이블뷰)에서 스와이프 액션으로 Delete를 구현하려면 ForEach뷰에 감싸야한다.
ForEach(store.list) { memo in
...
}
ctrl
과 함께 누르고 Embed
를 선택한 뒤, List
로 변경하면 된다.List {
ForEach(store.list) { memo in
...
}
}
주의할 점은, 리스트의 모디파이어로 추가하면 안된다는 것이다.
List {
ForEach(store.list) { memo in
...
}
.onDelete(perform: store.delete)
}
class MemoStore: ObservableObject {
@Published var list: [Memo]
...
func delete(set: IndexSet) {
for index in set {
list.remove(at: index)
}
}
}