Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What is going on with this article?

More than 3 years have passed since last update.

@Simmon

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
6
Help us understand the problem. What is going on with this article?