【发布时间】:2012-09-24 08:29:22
【问题描述】:
我在网上搜索了一下,发现了一些关于如何做我想做的事情的想法,但我仍然想知道你认为我应该做什么。
这里是上下文:
我正在为 iOS 5 开发一个应用程序。我使用 MapKit 显示地图,并添加了大约 5000 个注释 - 是的,这似乎很多,但别担心,我使用集群库 :) .为了不在用户每次打开地图时加载它们,我在我的 appDelegate 中创建它们(我创建了一个注释数组,并在打开地图时调用[_mapView addAnnotations:[appDelegate.annotationsToAdd allObjects]];)。创建annotationsToAdd 数组大约需要 10 秒,所以我认为这个解决方案运行良好(您必须等待这 10 秒才能被授权打开地图,但您只需等待一次,在启动时应用程序)。在每个注释中,我都有一个指向对象的“链接”,该对象包含一个值数组(15 个浮点数)。现在,当我创建注释时,subtitle 方法会返回其中一个值。
在我的地图的 ViewController 中,我有 2 个分段控件。第一个有 3 个段,第二个有 5 个段,这提供了 15 种组合 - 是的,这与我的注释中的对象数组具有相同数量的值:)。
所以您可能已经看到了我的问题,我想更新地图上每个注释的字幕(即使是集群中的注释,因为集群根据它持有的别针)。我还想要的是根据注释的副标题的值更新 annotationView 的颜色/图像。
我可能错了,但根据我的研究,我了解您必须删除所有注释,然后重新创建它们以执行此操作。您了解在我的情况下,这不是一个选项。我不能让用户每次更改其中一个控件的值时都等待 10 秒。
我看到一篇关于 KVO 的文章:这可能是一个可行的解决方案吗?
我对 NSNotification 了解不多,但我应该使用它们吗?
非常感谢您的帮助,我更希望得到详细的回答,向我展示在我显然不常见的情况下应遵循的步骤。
提前致谢。
【问题讨论】:
-
能把数据容器的代码和要更新字幕的代码贴出来吗?它可能会帮助 SO 社区通过上下文来制定答案。例如是否有必要一次更改每个注释?或者当它们出现并且你能够阅读注释时,你能忍受改变它们吗? (当然,即使在 iPad 的 Retina 显示屏上,也没有人能够一次读取全部 5000 条注释,是吗?)您可能想借鉴 Apple 在 iOS 中为 TableView 使用的理论,他们只为表格请求数据查看可见的单元格。
标签: ios annotations mapkit updates subtitle