我有这部分代码
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let itemID:NSManagedObjectID = self.frc!.objectAtIndexPath(indexPath).objectID!
let entity:Entity = self.frc?.managedObjectContext.existingObjectWithID(itemID, error: nil) as Entity
if entity.completed {
entity.completed = false
} else {
entity.completed = true
}
println(entity.completed)
}
当事件发生时,tableView会执行滚动到顶部动画的任何想法吗?
答案 0 :(得分:1)
您可能通过某种委托方法以某种方式(未显示)更新您的托管对象数组。最有可能的是,您正在某处调用tableView.reloadData()
来更新显示的数据。这会自动重新加载整个表格视图并滚动到顶部。
相反,只需使用tableView.reloadRowsAtIndexPaths(rowAnimation:)
记录的here更新相关单元格。
也许排序例程(未显示)按completed
属性排序。然后滚动可能是预期的行为。
注意:您将一组ID保留为dataSource
似乎很奇怪。由于Core Data的错误行为,拥有一个对象数组同样有效。更好的是,您应该使用带有表视图的NSFetchedResultsController
- 您可以免费获得许多很酷的行为,并且保证为性能和内存管理提供最佳解决方案。