我已经实现了对UITableView生成的每个单元格的复制,编辑和删除按钮(每个单元格都是根据用户需求创建的)。复制和编辑按钮以相同的方式编码,可以正常工作。但是,每次按删除按钮时,都会出现错误“线程1:信号SIGBART”。不知道如何解决。任何帮助将不胜感激。
一些有用的信息: -每个单元格都是一个节,并且每个节在tableview中都有一行 -按钮在单元格视图的代码中已正确连接,并已适当委派以在表视图中使用。
我是敏捷的初学者,所以请多多包涵。下面的代码来自我的UITableViewController。我试图从节索引及其引用的对象中删除该单元格。然后,我尝试在UITable视图上重新加载数据。但是,一旦单击删除按钮,我就会收到一个错误消息。
func hashtagCellDidTapDelete(_ cell: HashtagCell) {
if tableView.indexPath(for: cell) != nil {
let indexPath = tableView.indexPath(for: cell)
tableView.deleteSections([(indexPath?.section)!], with: .fade)
hashtagSource.hashtags.remove(at: (indexPath?.section)!)
tableView.reloadData()
}
}
答案 0 :(得分:1)
首先从数据源中删除该项目,然后更新UI。
并使用“可选绑定”来解开可选的indexPath
,以避免出现丑陋的括号,问号和感叹号。
并且永远不要在reloadData()
之后致电insert/deleteRows/Sections
。
func hashtagCellDidTapDelete(_ cell: HashtagCell) {
if let indexPath = tableView.indexPath(for: cell) {
hashtagSource.hashtags.remove(at: indexPath.section)
tableView.deleteSections([indexPath.section], with: .fade)
}
}
答案 1 :(得分:1)
我们不能删除uitableview单元格,而不能删除从数组中删除的条目,而该数组是在数据源方法(如
)中传递的@RelationshipEntity
或
func numberOfSections(in tableView: UITableView) -> Int { }