3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【iOS】TableViewのCell をスワイプして削除する

Last updated at Posted at 2022-03-14

はじめに

これは半分メモ書きのような記事です。そこまで内容は深くありませんのでご了承のほどよろしくお願いいたします。

前提内容

画像のような簡単な ToDo アプリを作成中です。タップしたらチェックマークが付き、再度タップするとチェックマークが外れる。iOS アプリ開発で入門的存在といて扱われるようなアプリです。
Simulator Screen Shot - iPhone 11 - 2022-03-14 at 21.59.33.png

目標

画像のように、削除用のボタンを左にスライドさせると出現します。
タップもしくはそのまま左にスライドさせると Cell が削除されます。
Simulator Screen Shot - iPhone 11 - 2022-03-14 at 22.20.03.png

やり方

方法はとてもシンプルです。ViewController.swift の中に次の方法を追加します。

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
        // 1
        items.remove(at: indexPath.row)

        // 2
        let indexPaths = [indexPath]
        tableView.deleteRows(at: indexPaths, with: .automatic)
    }

items は配列です。この items の中に TableView の Cell にある Walk the dogBrush my teeth などの文字列やチェックマークについての情報が入っています。

説明

簡単に説明します。
まず、1 の items.remove(at: indexPath.row) で配列からアイテムを削除します。

次に、2 の let indexPaths = [indexPath]tableView.deleteRows(at: indexPaths, with: .automatic) 注目する。
ここから、TableView から対応する行を削除します。

注意

items.remove(at:) を呼び出すと配列から取り出すだけでなく、オブジェクトへの参照がなくなるため、永久的に破棄されます。

最後に

今回は簡単なメモ投稿になります。最後まで読んでいただきありがとうございます。

3
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?