Skip to content
DeveloperMemos

Add Swipe to Delete to a SwiftUI List

SwiftUI, List, Swipe to Delete2 min read

In this tutorial, we will explore how to enhance the user experience of a SwiftUI List by adding swipe-to-delete functionality. The swipe-to-delete gesture allows users to easily remove items from a list with a simple swipe, providing a convenient way to manage and delete data within your app. Let's dive in and see how to implement this feature in SwiftUI.

Prerequisites

Before we begin, ensure you have a basic understanding of SwiftUI and Xcode installed on your development machine. We'll be using SwiftUI to build our user interface and Xcode as our integrated development environment (IDE).

Creating the List

To start, let's create a basic SwiftUI List that we can add swipe-to-delete functionality to. Open Xcode and create a new SwiftUI project, or open an existing project where you want to implement this feature.

In your project, locate the file that contains your main view, typically named ContentView.swift, and open it. Replace the existing code with the following:

1import SwiftUI
2
3struct ContentView: View {
4 @State private var items = ["Item 1", "Item 2", "Item 3"]
5
6 var body: some View {
7 NavigationView {
8 List {
9 ForEach(items, id: \.self) { item in
10 Text(item)
11 }
12 .onDelete(perform: deleteItem)
13 }
14 .navigationTitle("My List")
15 }
16 }
17
18 private func deleteItem(at offsets: IndexSet) {
19 items.remove(atOffsets: offsets)
20 }
21}
22
23struct ContentView_Previews: PreviewProvider {
24 static var previews: some View {
25 ContentView()
26 }
27}

In this example, we've defined a simple list with three items: "Item 1", "Item 2", and "Item 3". The @State property wrapper is used to track the state of the list items, and the onDelete(perform:) modifier is added to enable swipe-to-delete functionality.

The deleteItem(at:) function is called when the user performs the swipe-to-delete gesture. It removes the corresponding items from the items array using the remove(atOffsets:) method.

Testing the Swipe-to-Delete Functionality

Build and run your app using the iOS Simulator or a physical device. You should see a list with the three items we defined earlier. Try swiping left on an item, and you should see a delete button appear on the right side of the item. Tapping the delete button will remove the item from the list.

Congratulations! You have successfully implemented swipe-to-delete functionality in your SwiftUI List.

Customizing the Swipe Actions

By default, the swipe-to-delete action reveals a delete button, allowing users to remove items from the list. However, you can customize the swipe actions to perform different actions based on your app's requirements.

To customize the swipe actions, modify the deleteItem(at:) function in the ContentView struct. Instead of directly removing items from the items array, you can perform any additional actions required by your app. For example, you could show an alert, display an undo option, or prompt the user for confirmation before deleting an item.

In Closing

In this tutorial, we've learned how to add swipe-to-delete functionality to a SwiftUI List. This feature enhances the user experience by providing a simple and intuitive way for users to remove items from a list. We started by creating a basic list and then implemented the swipe-to-delete functionality using the onDelete(perform:) modifier.

Remember, the swipe-to-delete gesture is a standard user interface pattern in iOS, so incorporating it into your app can improve usability and make your app feel more native!