【问题标题】:Maintaining data sync between UITableView cells and array of model objects保持 UITableView 单元格和模型对象数组之间的数据同步
【发布时间】:2011-09-24 02:00:35
【问题描述】:

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

【问题讨论】:

    标签: iphone objective-c cocoa-touch


    【解决方案1】:

    我通过子类化 UITableViewCell 找到了解决方案。每个单元格维护对其对应的模型对象的引用,并观察该对象的布尔值isLoading 属性。当加载状态发生变化时,单元格会更新它的数据。换句话说,单元(视图)对象观察模型对象,然后在模型对象状态发生变化时请求数据呈现。

    【讨论】:

    • 虽然这是一种可能的方式,但它打破了 MVC 范式,并可能导致单元重用和/或设置和拆除 KVO 方面的麻烦。
    【解决方案2】:

    我不确定这是最好的解决方案,但在之前的项目中,我调用了消息reloadRowsAtIndexPaths

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

    【讨论】:

    • 谢谢,但我试图设置某种通知机制,而不是在每次状态更改时直接调用任何方法。
    • 那么我会像你一样等待更好的答案:D
    猜你喜欢
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    相关资源
    最近更新 更多