1

この障害で私を助けてください。約 200 の注釈を含むMKMapViewがあります。それらの 1 つをタップすると、詳細ビ​​ューが UINavigationController にプッシュされ、MKMapView が非表示になります。表示された詳細ビューを参照しているときに、メモリ警告が表示され、非表示のビューがアンロードされます。表示された詳細ビューを閉じた後、MKMapView を含むビューが再度読み込まれますが、注釈は表示されず (ユーザーの場所の青いバブルを除く)、フォーカスはデフォルトのものにリセットされます。[mapView: viewForAnnotation:] が呼び出されません。

viewDidUnload のすべての注釈を削除し、viewDidLoad に新しい注釈を挿入しても、 [mapView: viewForAnnotation:] がすべての注釈に対して呼び出されますが、MKMapView はそれらを表示しません。

アンロードしてロードした後、それを動作させて同じ可視マップ長方形を維持する方法はありますか? どうもありがとうございました。

編集 - 解決済み! 問題は、initWithNibName で取得していたことです。

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

その瞬間から、私は「マップ」変数だけで作業しました。しかし、リロード後、変数は明らかに無効なオブジェクトを指していました。そこで、上記のコマンドを viewDidLoad に移動したところ、うまく機能するようになりました。私を良い方向に向けてくれたCraigに感謝します!

4

1 に答える 1

0

おそらく、リロード中に MKMapView またはそのデリゲートから分離されている可能性があります。メモリの警告を修正するか、マップの初期化コードを変更して、viewdidload 中に初期ロードと同じものが呼び出されるようにすることができます。ただし、viewDidLoad を確認する価値はあるかもしれませんが、iOS 6 では別の方法で処理されると聞いたと思います。

于 2012-09-19T19:16:14.610 に答える