【问题标题】:Wrong annotation views being displayed on the map地图上显示错误的注记视图
【发布时间】:2012-09-02 17:52:39
【问题描述】:

我正在插入一种新的注释,与以前的注释不同,它们的行为很疯狂。当显示一个区域的地图时,代表会被传递属于一个遥远区域的注释,报告他们自己的特征。然而,它们恰好出现在正确注释应该出现的位置! 90% 的情况都会发生这种情况,其余的是正确的注释,并且显示的注释始终属于可用注释的严格子集。

可能会产生这种奇怪的行为以及如何解决它?

问题是我到处都使用了一个静态标识符。一旦我使用了一个带有依赖于注解的标识符的字符串,一切都得到了整理。

【问题讨论】:

  • 可能没有正确处理重复使用的注释视图。发布 viewForAnnotation 委托方法。
  • 澄清我使用了教程中建议的静态标识符,但这样它在任何地方都重用了完全相同的注释。我必须说我对 dequeueReusableAnnotationViewWithIdentifier 协议不是很清楚!
  • 为每个注释使用不同的标识符可能已经“解决”了您的问题,但它会破坏可重用性并且如果您有大量注释可能会影响性能。

标签: ios mkannotation mkannotationview mkmapviewdelegate


【解决方案1】:

事实上,我不得不为每个注释使用一个标识符:太糟糕了,它们很多,但它们带来了不同的信息,所以我不能让它们都一样。

【讨论】:

  • 正如@AnnaKarenina 已经说过的,标识符表示从中提取注释对象的重用池。在这方面,注释就像表格单元格。当您从池中绘制一个以前使用过的注解时,您必须完全重新配置它;否则它将具有以前使用的功能。如果您在识别特定注释时遇到问题,请使用您自己的注释子类并为其提供一些自定义 ivar 来携带此信息:不要滥用重用池标识符。
猜你喜欢
  • 1970-01-01
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多