【发布时间】:2011-12-07 05:31:50
【问题描述】:
我最近一直在扩展我的视野,并试图开始在我的编程中更多地使用 KVO。
我的 iPhone 应用程序中有一个视图控制器,它充当 UITableView 的数据源和委托。我还有一个单例模型控制器,它协调使用从网络获取的数据填充我的模型。
在我的视图控制器中,我请求模型的控制器从 Web 加载新数据。然后我可以观察单例的“数据集”属性,并在将项目添加到集合中或从集合中删除时接收 KVO 通知。
现在,我的表格视图中的每个单元格都有一个指示符,用于指定该单元格中的内容是否已被阅读(如邮件中的蓝色“未读”点)。 Like mail, when a row is selected, I'll display details about that row.在详细视图的 viewDidLoad 中,我将对象的“读取”属性设置为“是”。我希望原始视图控制器能够观察数据集中每个对象的“读取”属性,以便可以根据需要自动调用 [tableView reloadData] 并重新绘制没有蓝点的单元格。
在研究这个时,我发现了以下链接:http://homepage.mac.com/mmalc/CocoaExamples/controllers.html#observingACollection
据此,看来我将执行以下操作:
1) 成为数组的观察者
2) 每当我收到有关数组更改的通知时,我都会添加(或删除)自己作为我感兴趣的各个属性的观察者。
3)当我收到我感兴趣的属性更改的通知时,我可以调用 [tableView reloadData]
我目前正在尝试实施这种方法。有这方面经验的人可以就这种方法提供一些建议吗?如果这是处理这种情况的最佳方法?
如果这是正确的方法,是否有人愿意分享他们在集合更改时为集合中的对象添加/删除观察者的实现?
谢谢!
【问题讨论】:
-
听起来你在正确的轨道上。要理解的关键是观察一个集合与观察该集合中的所有项目不同,听起来你已经弄清楚了。在对数组的观察中,你需要开始观察已经添加到数组中的东西,停止观察已经被移除的东西。这就是为什么观察收藏品和内容很重要的原因。
标签: iphone ios uitableview key-value-observing