A simple Delete multiple rows The selected items will be removed in the live preview.
ContentView.swift
//
// ContentView.swift
// swiftuidev
//
// Created by Cairocoders
//
import SwiftUI
struct ContentView: View {
@State var numbers = ["Record1","Record2","Record3","Record4","Record5","Record6","Record1Seven","Record1Eight","Record1Nine","Record1Ten"]
@State var editMode = EditMode.inactive
@State var selection = Set<String>()
var body: some View {
NavigationView {
List(selection: $selection) {
ForEach(numbers, id: \.self) { number in
Text(number)
}
}
.navigationBarItems(leading: deleteButton, trailing: editButton)
.environment(\.editMode, self.$editMode)
}
}
private var editButton: some View {
if editMode == .inactive {
return Button(action: {
self.editMode = .active
self.selection = Set<String>()
}) {
Text("Edit")
}
}
else {
return Button(action: {
self.editMode = .inactive
self.selection = Set<String>()
}) {
Text("Done")
}
}
}
private var deleteButton: some View {
if editMode == .inactive {
return Button(action: {}) {
Image(systemName: "")
}
} else {
return Button(action: deleteNumbers) {
Image(systemName: "trash")
}
}
}
private func deleteNumbers() {
for id in selection {
if let index = numbers.lastIndex(where: { $0 == id }) {
numbers.remove(at: index)
}
}
selection = Set<String>()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
