我希望能够删除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单元格的活动幻灯片选项会滑回,我认为一切都应该正常工作。
有人可以帮助我吗?
答案 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