0

我有一个问题,我有一个用于填充 UITableView 的 coredata 对象。每个 UITableViewCell 都有几个按钮,我将它们用作复选框,当用户按下其中一个文本框时,我想更新 coredata 并重新加载 UITableView,以便更新我拥有的所有数组以反映新数据。

考虑到这一点,我得出的结论是,每次按下按钮时重新加载 UITableView 有点多余或矫枉过正,因为其中一些 UITableViews 将包含数百行,每个行有两个可编辑的 UIButtons。

所以我想也许我应该更新当前数组,然后当视图退出或设备进入睡眠状态时,我可以更新 coredata 对象吗?唯一的事情是我真的不知道这是否正确或可能。

这是这样一个问题的原因是,当我将一个按钮从一个刻度更改为一个十字时,如果我滚动离开,然后返回按钮刻度或十字恢复到它的旧值。

我想知道处理这种情况的最佳方法,因为我以前从未做过这样的事情。

4

1 回答 1

0

您应该使用 NSFetchedResultsController 及其委托方法来填充 UITableView。然后当用户点击一个按钮时,您只需更新相应的核心数据实体而不是单元格。然后 NSFetchedResultsController 将调用其委托方法,您可以只更新用户进行更改的那个单元格。此外,在 cellForRowAtIndexPath 中,您可以简单地找到相应的 CoreData 实体,并使用其属性/属性来调整单元格的显示。请记住,当 tableView 调用 cellForRowAtIndexPath: 时,您必须始终使用一些数据(通常是 NSArray)从中读取对 indexPath 处的单元格执行的操作。这样,当 fetchedResutsController 调用它的委托方法时,您可以简单地在 tableView 上调用 reloadCellAtIndexPath,然后 tableView 会再次调用 cellForRowAtIndexPath。随着核心数据实体的更新,您调整该单元格显示的逻辑将导致该单元格看起来应有的样子。重要的是,您只能在 cellForRowAtIndexPath 中调整单元格的外观,并将外观基于 CoreData 实体。在多个地方更改单元格的外观,您会遇到问题。

于 2013-11-03T08:06:12.867 回答