UITableView编辑模式未显示删除按钮

时间:2017-05-01 10:01:26

标签: ios swift3

我正在复制Apple的示例Food Tracker应用程序,并且在编辑模式下我的TableView中的项目没有显示左手删除图标(圆形红色图标)。如果我向左滑动,我会在右侧看到一个删除按钮。我已经下载了Food Tracker代码,但它确实有效。

我可以看到的差异是示例应用程序实现了一个UITableViewController,而我在标准的UIViewController中有一个UITableView。我不确定为什么这不起作用。

有一些类似的问题,但它们是旧版本的Swift / Ios,所以我不确定它们是否仍然相关。

以下是示例应用https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/index.html#//apple_ref/doc/uid/TP40015214-CH2-SW1

的链接

以下是我最近添加的应该使其正常工作的功能

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示例的样子;

enter image description here

我的左手按钮丢失了。我能看到的唯一区别是我在ViewController中使用了TableView。

由于

尼克

1 个答案:

答案 0 :(得分:0)

无需检查barButtonItem的标题,因为点击它已经切换了其状态并在编辑参数时传递了正确的状态。

此外,在覆盖时,您需要调用super的实现,因为不存在将始终显示删除指示符。

override func setEditing(_ editing: Bool, animated: Bool) {
    super.setEditing(editing, animated: true)
    tableView.setEditing(editing, animated: true)
}