更改模型时更新UI

时间:2009-11-13 23:38:56

标签: iphone objective-c cocoa

我有一系列带有各种UIControl的UITableViewCell元素来设置模型值。

当我对模型进行更改时,我很难找到更新UITableViewCell的方法,该方法显示模型中的计算属性。

我已将模型放在AppDelegate中,并直接从RootViewController访问它。在每个UITableViewCell实现中,我都有一个方法,可以在进行更改时更新模型。

但是,我不知道如何刷新显示以显示更新。 (我尝试将相同的元素连接到两个动作。但是,动作完成的顺序不一致,所以它首先重新加载显示,然后更新模型)。

任何帮助都将受到高度赞赏。

谢谢..

2 个答案:

答案 0 :(得分:1)

  

我尝试将相同的元素连接到   两个动作。但是,顺序在哪   行动完成不是   一致,所以它首先重新加载   显示,然后更新模型

尝试仅使用一个操作,首先更新模型,完成后再更新显示。在我看来,你的问题是同步这两个,所以我建议在你的模型更新功能之后调用显示更新函数。

答案 1 :(得分:0)

如果您正在使用NSFetchedResultsManager,则很容易实现UITableViewController的委托回调。具体做法是:

- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller;
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath;
- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type;
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller;

请参阅RootViewController示例中的Core Data Books了解实施情况。

通过这种方式,您不会完全重新加载数据,而只是修改已更改的部分。