我已经完成了数百次,但是目前,我不知道为什么当我从右向左滑动时“删除”按钮没有显示。
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
}
}
答案 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,因此从不需要实现该方法。