Ios UITableView编辑模式不显示删除按钮

Ios UITableView编辑模式不显示删除按钮,ios,swift3,Ios,Swift3,我正在复制苹果的Food Tracker示例应用程序,但有一个问题,在编辑模式下,我的TableView中的项目没有显示左侧的删除图标(红色圆形图标)。如果我向左滑动,我会在右侧看到一个删除按钮。我已经下载了食物追踪代码,它可以工作了 我可以看到的区别是,示例应用程序实现了UITableViewController,而我在标准UIViewController中有一个UITableView。我不知道为什么这不起作用 有一些类似的问题,但它们是Swift/Ios的旧版本,所以我不确定它们是否仍然相关

我正在复制苹果的Food Tracker示例应用程序,但有一个问题,在编辑模式下,我的TableView中的项目没有显示左侧的删除图标(红色圆形图标)。如果我向左滑动,我会在右侧看到一个删除按钮。我已经下载了食物追踪代码,它可以工作了

我可以看到的区别是,示例应用程序实现了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
下面是食物跟踪器示例的样子

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

谢谢


尼克,我想我解决了这个问题。实际上,UITableViewController正在发挥相当大的“魔力”。要在带有TableView的普通UIViewController中重新创建此功能,必须覆盖SetEditing功能,并根据按钮的标题将其置于编辑模式

override func setEditing(_ editing: Bool, animated: Bool) {


    let status = navigationItem.leftBarButtonItem?.title



    if status == "Edit" {

        tableView.isEditing = true

        navigationItem.leftBarButtonItem?.title = "Done"

        }

    else {

        tableView.isEditing = false

        navigationItem.leftBarButtonItem?.title = "Edit"

    }

}

我想我解决了这个问题。实际上,UITableViewController正在发挥相当大的“魔力”。要在带有TableView的普通UIViewController中重新创建此功能,必须覆盖SetEditing功能,并根据按钮的标题将其置于编辑模式

override func setEditing(_ editing: Bool, animated: Bool) {


    let status = navigationItem.leftBarButtonItem?.title



    if status == "Edit" {

        tableView.isEditing = true

        navigationItem.leftBarButtonItem?.title = "Done"

        }

    else {

        tableView.isEditing = false

        navigationItem.leftBarButtonItem?.title = "Edit"

    }

}

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

另外,在重写时,您需要调用super的实现,因为缺勤将始终显示delete指示符

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

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

另外,在重写时,您需要调用super的实现,因为缺勤将始终显示delete指示符

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

在不查看整个设置的情况下共享一些代码这很难诊断。这可能会带来一些启示:添加editButtonItemNirav D的操作方法-你能解释一下需要添加什么操作方法以及如何添加吗?@NickS你已经将editButtonItem设置为leftBarButtonItem,然后显示editButtonItem的操作方法按下此编辑按钮时将调用的方法显示一些代码而不查看整个设置这很难诊断。这可能会带来一些启发:添加editButtonItemNirav D的操作方法-您能解释更多关于需要添加什么操作方法以及如何添加吗?@NickS您已将editButtonItem设置为leftBarButtonItem,然后显示editButtonItem的操作方法当您按下此编辑按钮时将调用的方法