当我删除具有Core数据的单元格时,我遇到了一个问题。 当我在单元格之间删除时,删除单元格的下一个单元格在下一个单元格后变得它看起来像下面。
它看起来像。当我外出并返回表视图时,它被正确删除。 但是,当我删除最后一个单元格时,它看起来不错。它运作良好!它不会发生这种情况(删除最后一个单元格)!
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
//FIXME: Delete
let quote:Quotes = quotes![indexPath.row]
self.context.delete(quote)
do {
try self.context.save()
self.quotes?.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .fade)
} catch let error {
print(error)
}
}
}
func controllerWillChangeContent(controller: NSFetchedResultsController<NSFetchRequestResult>) {
self.tableview.beginUpdates()
}
func controllerDidChangeContent(controller: NSFetchedResultsController<NSFetchRequestResult>) {
self.tableview.endUpdates()
}
我不知道有什么不对,请告诉我这种情况:(
我的模拟器是v10.1,Xcode版本是8.2.1
答案 0 :(得分:0)
问题是细胞高度。与屏幕高度相比,单元高度太大。 当我改变细胞高度时,效果很好。
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 20 //before: view.frame.width
}
但是,我想研究形状细胞。所以,我在顶部添加了刷新控制器。
var refreshControl: UIRefreshControl!
override func viewDidLoad() {
super.viewDidLoad()
refreshControl = UIRefreshControl()
refreshControl.tintColor = UIColor(red: 0.996, green: 0.878, blue: 0.196, alpha: 1.00)
refreshControl.addTarget(self, action: #selector(self.refresh), for: UIControlEvents.valueChanged)
tableview.addSubview(refreshControl)
}
func refresh() {
self.tableview.reloadData()
self.refreshControl?.endRefreshing()
}
这不是完美的答案,但它可能是第二好的政策。如果你有更好的方式,请发表评论:-)