2012-09-19 78 views
1

請幫助我解決這個問題。我有一個MKMapView約200註釋。當我點擊其中一個時,一個細節視圖被推入UINavigationController,所以MKMapView被隱藏。在瀏覽呈現的詳細視圖時,我得到內存警告並且隱藏的視圖被卸載。在關閉顯示的詳細信息視圖後,再次加載MKMapView的視圖,但沒有註釋可見(用戶位置藍色泡泡除外)並且焦點重置爲默認值。 [mapView:viewForAnnotation:]不會被調用。MKMapView在卸載並加載後(內存警告)忽略註釋

即使我刪除viewDidUnload中的所有註釋並在viewDidLoad中插入新註釋,但即使爲每一個調用了[mapView:viewForAnnotation:],MKMapView也不會顯示它們。

任何想法如何使其行爲並保持相同的可見地圖矩形後卸載&加載?非常感謝你。

編輯 - 解決!問題是在initWithNibName,我得到

map =(MKMapView *)[self.view viewWithTag:TAG_MAP];

從那一刻起,我只和'地圖'變量一起工作。但重裝後,變量顯然指向了一個無效的對象。所以我將上面的命令移到了viewDidLoad,現在它可以工作。感謝克雷格指點我的好方向!

回答

0

也許你正在重新加載期間從MKMapView或其委託分開。您可以查看修復內存警告,或更改您的映射初始化代碼,以確保在初始加載時,在viewdidload期間調用相同的內容。可能值得檢查viewDidLoad,但我認爲我聽說它在iOS 6中得到了不同的處理。

+0

你說得對,我正在從MKMapView中分離出來(或者更確切地說,我曾與原始的一個合作,顯示出來;我不明白新的一個來自哪裏,因爲initWithNibName在卸載和加載過程中沒有被調用,但無論如何,它現在可以工作:-)謝謝! – user1418166

+0

這似乎是一個奇怪的方式來獲得一個子視圖的連接。通常情況下,您需要添加一個插座並使用InterfaceBuilder從您拖動到主視圖和該插座的MKMapView建立連接。你有沒有使用標籤有一個很好的理由? – Craig