У меня есть MKMap
с серией MKAnnotations
, все из которых красные, что нормально.Я выбрал «показать местоположение пользователя» в IB и изменил MKAnnotation
с красного на синий, у меня есть код в моем методе viewForAnnotation
:
if (annotation == theMap.userLocation)
return nil;
Все хорошо, и приложение работает нормально, но если пользователь случайно коснется синей точки расположения пользователя, я получаю следующее падение:
2012-02-01 20:43:47.527 AusReefNSW[27178:11603] -[MKUserLocationView setPinColor:]: unrecognized selector sent to instance 0x79b0720
2012-02-01 20:43:47.528 AusReefNSW[27178:11603] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MKUserLocationView setPinColor:]: unrecognized selector sent to instance 0x79b0720'
*** First throw call stack:
Если я удаляю приведенный выше код, все работает хорошо, но вывод красный.Я предпочитаю иметь синий значок, но пока не выяснил, почему происходит сбой.Любые идеи были бы хорошы.Спасибо.
решено!Спасибо Марвину и вот этот код, если кто-нибудь найдет его полезным.Короче говоря, мне пришлось сначала проверить, относится ли MKAnnotation к классу MyAnnotation или к классу MKUserLocation.
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKPinAnnotationView *)view
{
theAnnotationSelected = [[mapView selectedAnnotations] objectAtIndex:0];
if ([theAnnotationSelected isKindOfClass:[MyAnnotation class]] )
{
view.pinColor = MKPinAnnotationColorGreen;
}
- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKPinAnnotationView *)view
{
if ([theAnnotationSelected isKindOfClass:[MyAnnotation class]] )
{
view.pinColor = MKPinAnnotationColorRed;
}