スワイプして削除を有効に(UITableView)

ちょっとしたコードや設定などですが、忘れがちであらためて調べるのも面倒なので、忘備録的なものです。
順不同で、気づいたものから順にSwift4で使えるコードを載せていきます。

Swift-Tips

スワイプして削除を有効に

・行ごとの左スワイプを有効にする
・スワイプ時に表示する文字列と実行する処理を設定
・削除以外の処理を複数割り当てる場合もあるので、あらかじめそれを考慮した処理にしておく


// 行ごとの左スワイプを有効にする func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { return true } // スワイプ時に表示する文字列と実行する処理を設定 // 複数設定する場合もあるのでこちらを利用 override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? { let deleteTitle:String = NSLocalizedString("Delete", tableName: "Message", comment: "削除") let delete: UITableViewRowAction = UITableViewRowAction(style: .normal, title: deleteTitle) { (action, index) -> Void in self.removeConfirm(indexPath.row) } delete.backgroundColor = NC_014_KARAKURENAI return [delete] } // 削除実行時に呼び出す関数 // データを削除 // テーブルビューをリロード func removeEntry(_ index:Int) { appDl.removeAudioFile(appDl.entries[index].audioFilePath) appDl.entries.remove(at: index) appDl.saveEntriesToJson() tvMainList.reloadData() } // 削除実行するかを確認 func removeConfirm(_ index:Int) { let alertController = UIAlertController( title: NSLocalizedString("Delete entry", tableName: "Message", comment: "エントリーの削除"), message: NSLocalizedString("delete-confirm-message", tableName: "Message",value: "Delete the data completely. Is it OK?", comment: "データを完全に削除します。よろしいですか?"), preferredStyle: .alert) let defaultAction:UIAlertAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.destructive, handler:{ (action:UIAlertAction!) -> Void in self.removeEntry(index) }) alertController.addAction(defaultAction) let cancelAction = UIAlertAction( title: NSLocalizedString("Cancel", tableName: "Message", comment: "キャンセル"), style: .cancel, handler:nil) alertController.addAction(cancelAction) alertController.popoverPresentationController?.sourceView = view alertController.popoverPresentationController?.sourceRect = view.frame present(alertController, animated: true, completion: nil) }