Swift で UITableView にデータを追加したり、逆にデータを全削除したい時の方法です。
特に全削除については、最初調べ方が悪かったのか、なかなか私の要望に合致するページが見つからなかったので備忘録も兼ねています。
今回参考にさせていただいた記事はこちら。
Xcode – swift4 tableViewの更新の方法 | teratail
https://teratail.com/questions/127907
先に全削除の方法についてです。
特定のデータだけを削除したい場合は、.deleteRows()
を使って、消したい行を指定しますが、全削除の場合は、下記の2行だけで完了します。
items = [] // UITableView に表示しているデータを格納している配列 tableView.reloadData()
コードにもコメントで書きましたが、items
という配列は、UITableView
に表示しているデータを格納しているものを指定します。
この配列を空にしてから、.reloadData()
で UITableView
を再読み込みします。
そうすると、配列の内容が TableView に反映され、データが全て削除できます。
修正すれば、最初のデータだけなど、特定のデータだけを削除することもできます。
次はデータの追加方法ですが、2種類方法があります。
なお、両方とも末尾にデータを追加する方法です。
1つ目は、上で紹介した .reloadData()
を使う方法で、下記のように記述します。
items.append([追加したいデータ]) tableView.reloadData()
こちらの方がコードがシンプルで分かりやすいのでおすすめです。
2番目は、.beginUpdates()
、.insertRows()
、.endUpdates()
を使った方法です。
items.append([追加したいデータ]) tableView.beginUpdates() tableView.insertRows(at: [IndexPath.init(row: self.items.count-1, section: 0)], with: .automatic) tableView.endUpdates()
ちなみに、こちらは UITableView へのデータ追加方法を調べた時に、一番最初に見つけた方法です。
TableView をアップデートの開始と終了を宣言する必要があり、その間にデータの挿入を行なっています。
…こちらもわかりにくくはないのですが、比べてしまうと、やはり 1つ目の .reloadData()
を使った方法の方が分かりやすいですね。
ただ、どちらも問題なく動作したので、あとはお好みで使い分けてください。
以上、Swift の UITableView にデータを追加、もしくはデータの全削除を行う方法でした。
ご参考になれば幸いです。