LoginSignup
10
6

More than 5 years have passed since last update.

【iOS11】UITableViewセルのスワイプで削除を無効にする方法【Swift】

Last updated at Posted at 2017-10-17

iOS11ではUITableViewのセルをスワイプしただけで削除されてしまいます。

20171017200721.gif

元々のコード

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {

    let deleteButton: UITableViewRowAction = UITableViewRowAction(style: .normal, title: "削除") { (action, index) -> Void in
        self.array.remove(at: indexPath.row)
        tableView.deleteRows(at: [indexPath], with: .fade)
    }
    deleteButton.backgroundColor = UIColor.red

    return [deleteButton]
}




誤操作を防ぐため、従来のようにスワイプ後一旦停止し、削除ボタンを押した際にセルの削除を行いたい場合は下記のコードを追記することで解決できます。

追記するコード

@available(iOS 11.0, *)
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
        let delete = UIContextualAction(style: .destructive, title: "削除") { (action, sourceView, completionHandler) in
            completionHandler(true)
            self.array.remove(at: indexPath.row)
            tableView.deleteRows(at: [indexPath], with: .fade)
        }
        let swipeAction = UISwipeActionsConfiguration(actions: [delete])
        swipeAction.performsFirstActionWithFullSwipe = false
        return swipeAction
}

参考

How do I disable the full swipe on a tableview cell in iOS11

10
6
0

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
10
6