【Swift】TableViewにスワイプアクションを追加する方法

以下のようにテーブルのセルを横にスワイプしたときにアクションを起こすアプリの作り方をご紹介します。

スワイプされたときに行う処理を書く

スワイプ時の背景の色や画像、処理などを行うための関数を用意します。

func deleteAction(at indexPath:IndexPath) -> UIContextualAction{
       let action = UIContextualAction(style: .destructive, title: "Delete", handler: {(action, view,completion) in
        //選択された行のデータを消す
        self.dataSource.remove(at: indexPath.row)
        //選択された行を消す
        self.tableView.deleteRows(at: [indexPath], with: .automatic)
        // 処理が完了したことを返す
        completion(true)
       })
        // スワイプ時の背景色を赤色に
        action.backgroundColor = .red
        // スワイプ時の画像をゴミ箱に
        action.image = UIImage(systemName: "trash")
       
       return action
   }

テーブルビューに処理を追加する

上記で作った関数をテーブルビューで呼ぶようにします。

override func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
     let delete = deleteAction(at: indexPath)
     return UISwipeActionsConfiguration(actions: [delete])
 }

参考

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog