维护UITableView单元格和模型对象数组之间的数据同步

维护UITableView单元格和模型对象数组之间的数据同步

问题描述:

我有一个UITableView,其中每个单元格对应于一个模型对象。这些模型对象的列表保存在管理模型对象的单例对象内的数组中。 UITableViewController子类拥有一个引用这个单例对象的实例变量。模型对象从网上异步更新其内部数据。当相应的模型对象完成重新加载其数据时,更新表格单元格的最佳方法是什么?模型对象应该发出通知吗?表格单元格是否可以使用KVO从模型对象接收更改?还有其他选择吗?这里最好的做法是什么?维护UITableView单元格和模型对象数组之间的数据同步

我找到了一个解决方案通过继承的UITableViewCell。每个单元维护一个对应于它所对应的模型对象的引用,并观察该对象的boolean isLoading属性。当加载状态改变时,单元更新它的数据。换句话说,单元(视图)对象观察模型对象,然后请求数据在模型对象状态改变时呈现。

+0

虽然这是一种可能的方式,但它打破了MVC的范例,并可能导致关于细胞再利用和/或设置和拆除KVO的问题。 – DrMickeyLauer

我不知道这是最好的解决方案,但在以前的项目我打电话的消息reloadRowsAtIndexPaths

NSArray* paths = [[NSArray alloc] initWithObjects:indexPath, nil];  
[tableView reloadRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationMiddle]; 
+0

谢谢,但我试图设置某种通知机制,而不是每次状态更改时直接调用任何方法。 – Sean

+0

那么我会像你一样等待更好的答案:D – 3on