如果用户执行除删除操作之外的任何活动,则向后滑动表查看行“删除行”选项

时间:2016-01-23 14:45:01

标签: ios swift uitableview

我希望能够删除UITableViewController的某些行。使用下面的标准tableView代码,通过自定义导航栏下拉菜单BTNavigationDropdownMenu选定行切换该选项:

override func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle { //let object = items[indexPath.row]
    if myPostStatus == true { return UITableViewCellEditingStyle.Delete } else { return UITableViewCellEditingStyle.None }
}


override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
    if editingStyle == UITableViewCellEditingStyle.Delete {
       // numbers.removeAtIndex(indexPath.row)
        tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
    }
}

一切正常,问题是: - 当我选择下拉行时,使tableView能够“删除。然后我向左滑动单元格(显示删除按钮)并且由于某种原因直接触摸下拉菜单以加载不允许的数据删除后,应用程序因以下错误而冻结。

*** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3512.30.14/UITableView.m:1720

如果我手动将单元格滑回到原始位置,然后点击下拉菜单选择新数据(无法删除),一切正常,没有任何问题,我可以看到加载的新数据tableView单元格没有给出要删除的幻灯片选项。

所以,我认为问题是幻灯片打开删除选项。如果有一种方法,当我触摸导航栏菜单时,删除tableView单元格的活动幻灯片选项会滑回,我认为一切都应该正常工作。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

我想第二次回到你身边。崩溃的原因可能是因为在tableView.startUpdating之后没有调用tableView.endUpdating()方法。我不会涉及有关您的自定义导航控制器的其他详细信息。但我们的简单方法是隐藏包含自定义下拉项的导航栏本身。

    override func setEditing(editing: Bool, animated: Bool) {
    super.setEditing(editing, animated: animated)

        navigationController!.setNavigationBarHidden(true, animated: true)

        self.tableView.setEditing(editing, animated: animated)

}

你可以反正导航回来。阅读有关自定义导航栏的信息,以便在需要时获取更多详细信息。

答案 1 :(得分:0)

尝试在点击其他任何地方之前调用tableView.endEditing。

E.g。在tableView(tableView willSelectRowAtIndex: NSIndexPath) -> NSIndexPath?

异常可能来自更改NSIndexPath