我正在复制Apple的示例Food Tracker应用程序,并且在编辑模式下我的TableView中的项目没有显示左手删除图标(圆形红色图标)。如果我向左滑动,我会在右侧看到一个删除按钮。我已经下载了Food Tracker代码,但它确实有效。
我可以看到的差异是示例应用程序实现了一个UITableViewController,而我在标准的UIViewController中有一个UITableView。我不确定为什么这不起作用。
有一些类似的问题,但它们是旧版本的Swift / Ios,所以我不确定它们是否仍然相关。
的链接以下是我最近添加的应该使其正常工作的功能
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
//delete the row from the dataSource
dataSource.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .fade)
}
else if editingStyle == .insert {
//create a new instance and insert the row
}
}
我将此添加到ViewDidLoad()以获取导航栏中的“编辑”按钮
navigationItem.leftBarButtonItem = editButtonItem
这是Food Tracker示例的样子;
我的左手按钮丢失了。我能看到的唯一区别是我在ViewController中使用了TableView。
由于
尼克
答案 0 :(得分:0)
无需检查barButtonItem的标题,因为点击它已经切换了其状态并在编辑参数时传递了正确的状态。
此外,在覆盖时,您需要调用super的实现,因为不存在将始终显示删除指示符。
override func setEditing(_ editing: Bool, animated: Bool) {
super.setEditing(editing, animated: true)
tableView.setEditing(editing, animated: true)
}