2017-12-06 1 views
0

무엇 내가 원하는 것은 해고 나는 핀, 그것은 다시 선택되지 않은 상태로 UI의 핀 변경보기 (핀의 배경 예를 들어, 색상 변경)아이폰 OS 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 속성을 직접 변경하거나 함수를 사용하여 필요에 따라 모든 속성을 재설정하십시오.