前提・実現したいこと
tableViewにセルを表示しているのですが
セルをスワイプして削除すると、削除したセルより下のセルが一段づつ上に詰まるのではなく
一番下にあったセルが消したセルの段に入ってきてしまい、順番が変わってしまいます。
どのようにセルを消すコードをかけば一段づつ詰まるようになるでしょうか。。。
該当のソースコード
一番下にセルを消す処理があります。
import UIKit import RealmSwift class ViewController: UIViewController,UITableViewDataSource,UITextFieldDelegate,UITableViewDelegate { //箱を作っている var todoItems: Results<ItemBox>! @IBOutlet weak var table: UITableView! override func viewDidLoad() { super.viewDidLoad() table.dataSource = self let realm = try! Realm() //箱に実体を入れている todoItems = realm.objects(ItemBox.self) table.reloadData() table.delegate = self //空のセルの区切り線を消す処理 table.tableFooterView = UIView() //ナビバーのタイトルを大きくする(スクロール時は小さくなる) navigationController?.navigationBar.prefersLargeTitles = true } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 50 } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) table.dataSource = self let realm = try! Realm() todoItems = realm.objects(ItemBox.self) table.reloadData() } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return todoItems.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) let object = todoItems[indexPath.row] cell.textLabel?.text = " "+object.title cell.textLabel?.font = UIFont(name: "Arial-BoldMT", size: 16) return cell } func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { if editingStyle == .delete { deleteTodo(at:indexPath.row) table.reloadData() } } // var currentItem: String? = nil // var currentMemo = "" var todotoday: ItemBox? var receiveitemBox: ItemBox? func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { tableView.deselectRow(at: indexPath, animated: true) receiveitemBox = todoItems[indexPath.row] self.performSegue(withIdentifier: "tomemo", sender: nil) } @IBAction func nippou(_ sender: Any) { self.performSegue(withIdentifier: "autonippou", sender: nil) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "tomemo" { let memoViewController:memoViewController = segue.destination as! memoViewController memoViewController.itemBox = receiveitemBox! } if segue.identifier == "autonippou" { let autonippouViewController:autonippouViewController = segue.destination as! autonippouViewController } } func deleteTodo(at index: Int) { let realm = try! Realm() try! realm.write { realm.delete(todoItems[index]) } } }
試したこと
よろしくお願いいたします。。。