UITableView滑动以删除按钮不显示

时间:2018-07-10 20:55:39

标签: ios swift tableview

我已经完成了数百次,但是目前,我不知道为什么当我从右向左滑动时“删除”按钮没有显示。

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {

        if editingStyle == .delete {


        }

    }

我已经实现了commit tableView委托,它使删除按钮自动出现。但是由于某种原因它什么也没做。删除按钮从不显示。

每次我滑动segue都会被解雇,这将我带到单独的屏幕。

  override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        if segue.identifier == "showOrderDetails" {

            guard let indexPath = tableView.indexPathForSelectedRow else {
                return
            }

            let order = self.orders[indexPath.row]

            let placeOrderTVC = segue.destination as! PlaceOrderTableViewController
            placeOrderTVC.order = order 

        }
    }

2 个答案:

答案 0 :(得分:1)

尝试使用此代码,您还需要编写canEditRowAt委托

override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return true
}

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if (editingStyle == UITableViewCellEditingStyle.delete) {
        // handle delete
    }
}

答案 1 :(得分:0)

我以前有过这个,您需要实现editActionsForRowAt委托方法。似乎有时这是必需的,而其他时候则不是。

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
  let result = UITableViewRowAction(style: .destructive, title: "Delete") {
    (_, indexPath) in
    //Delete from your data structure here
  }

  return [result]
}

canEditRowAt数据源方法默认为true,因此从不需要实现该方法。