2012-09-02 45 views
0

我正在插入一種新的註釋,與以前的註釋不同,它們的行爲非常瘋狂。當顯示一個區域的地圖時,代表被傳遞屬於一個很遠的區域的註釋,報告他們自己的特徵。然而,它們恰好出現在正確的註釋應該出現的位置!這發生在90%的時間裏,其餘的是正確的註釋,顯示的註釋總是屬於可用子集的嚴格子集。在地圖上顯示錯誤的註釋視圖

怎麼會產生這種奇怪的行爲,以及如何解決它?

問題是我用了一個靜態標識符,正如建議無處不在。一旦我使用了一個依賴於註解的標識符的字符串,所有的東西都被整理出來了。

+0

可能重用的註釋視圖沒有正確處理。發佈viewForAnnotation委託方法。 – Anna

+0

正如我所闡明的那樣,我使用了本教程中建議的靜態標識符,但是這樣它就可以在任何地方重複使用相同的註釋。我必須說我對dequeueReusableAnnotationViewWithIdentifier協議沒有那麼清楚! –

+0

爲每個註釋使用不同的標識符可能已「解決」了您的問題,但它會破壞可重用性,並且會在您有很多註釋時影響性能。 – Anna

回答

-1

事實上,我不得不爲每個註釋使用一個標識符:它們太多太糟糕了,但它們帶來不同的信息,所以我不能使它們全都相同。

+0

正如@AnnaKarenina已經說過的那樣,標識符表示註釋對象被繪製的重用池。註釋在這方面就像表格單元格一樣。當您從池中繪製以前使用的註釋時,必須完全重新配置它;否則它將具有以前使用中遺留的功能。如果您在識別特定註釋時遇到困難,請使用您自己的註釋子類併爲其提供一些自定義ivar以攜帶此信息:請勿濫用重用池標識符。 – matt