2017-12-06 19 views
0

私はピンの選択を解除したときに私がやりたいことは、ピンビューの変更は、それが戻って非選択状態(ピンの背景の例えば変色)へのUIださiOSの11 MKAnnotationView prepareForReuseは、マップビューでピンビューを閉じ

- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view 
{ 
    //do something; 

    XLMapItemAnnotation* mapItem = [self annotationForView:view]; 
    [view prepareForReuse]; 
} 

iOS 11でアプリを実行すると、ピンを選択解除すると、ピンが完全にマップビューで消えます。 prepareForReuseを削除しても、すべてが問題ありません。 とiOS 10でアプリを実行するといくつかのコードは、すべてがうまくいけない、ピンが消えません。 私にヒントを与えることができます、何が間違っている可能性がありますか?

答えて

0

自分で-prepareForReuseと呼ぶべきではありません。それはMapKitが自分自身を呼び出すためのものです。

0

@Tim Johnsen氏によると、-prepareForReuseはMKAnnotationViewの再利用の仕組みを意図しているので、自分で呼び出すべきではありません。

iOS 11では、MapKitがMKAnnotationViewのクラスタリングアルゴリズムを導入しました(しかし、試してみると、ときどき奇妙な動作が発生することがありました)。この場合、MKAnnotationView.isHiddenはデフォルトでtrueに設定されています。したがって、-prepareForReuseを呼び出した後、MKAnnotationViewは非表示になります。

ピンの色を変更する場合は、pinTintColorプロパティを直接変更するか、関数を使用して必要に応じてすべてのプロパティをリセットしてください。

関連する問題