Можно реализовать действие удаления и возможность упорядочить элементы списка довольно просто.
struct SwipeActionView: View {
@State var items: [String] = ["One", "two", "three", "four"]
var body: some View {
NavigationView {
List {
ForEach(items.identified(by: \.self)) { item in
Text(item)
}
.onMove(perform: move)
.onDelete(perform: delete)
}
.navigationBarItems(trailing: EditButton())
}
}
func delete(at offsets: IndexSet) {
if let first = offsets.first {
items.remove(at: first)
}
}
func move(from source: IndexSet, to destination: Int) {
// sort the indexes low to high
let reversedSource = source.sorted()
// then loop from the back to avoid reordering problems
for index in reversedSource.reversed() {
// for each item, remove it and insert it at the destination
items.insert(items.remove(at: index), at: destination)
}
}
}
Редактировать: Есть эта статья от Apple, которую я не могу поверить, что я не нашел ранее. Создание жестов SwiftUI . Я еще не экспериментировал с этим, но статья, похоже, отлично справилась!