2009-10-29 4 views
0

Я очень новичок в разработке XCode и iPhone, поэтому, пожалуйста, несите меня, если этот вопрос слишком прост. Но у меня есть карта, и я успешно добавил изображения (а не булавки) к ней для моих аннотаций. И я могу изменить изображение, когда пользователь выбирает одну из аннотаций.mapkit и аннотации

Я создал класс, который наследуется от MKAnnotationView со следующими методами: -

- (id)initWithAnnotation: 

- (void)setAnnotation: 

- (void)drawRect: 

и я использую

- (void)touchesBegan 

знать, когда была выбраны аннотации. И в контактахBegan я делаю: -

UIImage *i = [UIImage imageNamed:@"A.png"]; 
self.image = i; 

чтобы изменить изображение. Но то, что я на самом деле застопорился, - это как изменить образ на исходное изображение, когда пользователи выбирают следующую аннотацию. Я пробовал: -

NSArray *selectedAnnotations = map.selectedAnnotations; 
for(id annotationView in selectedAnnotations) { 
[map deselectAnnotation:[annotationView annotation] animated:NO]; 
} 

но это ошибки

и я попытался

for (MKAnnotationView *ann in map.selectedAnnotations){ 
if ([ann isMemberOfClass:[Place class]]) 
{ 
place = (Place *)ann; 
NSLog(@"second = %@"@" %f"@" %f", place.title, place.longitude, place.latitude); 
if (currentPlaceID == place.placeID) { 
//UIImage *i = [UIImage imageNamed:@"A.png"]; 

//ann.image = i; 
} 
else { 
UIImage *i = [UIImage imageNamed:@"pin.png"]; 

ann.image = i; 
} 
} 

} 

выше код работает нормально, пока я не дойду до ann.image = я; то это ошибки. Ошибки я получаю: -

*** -[Place setImage:]: unrecognized selector sent to instance 0x4514370 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[Place setImage:]: unrecognized selector sent to instance 0x4514370' 

Да, я могу видеть, что мое место объект не имеет изображение так вот почему это происходит не так. Но если я создам свойство изображения на объекте моего места - как это изменит изображение аннотаций, которое я пытаюсь сделать.

Просьба сообщить, что я крутился по кругу на этом месте уже 2 дня !!!!

Заранее спасибо Шерил

ответ

0

Шерил,

Я не полностью следовать тому, что вы пытаетесь сделать, но вот некоторые мысли:

Вот что я хотел бы сделать, чтобы восстановить исходное изображение:

В вашем подклассе MKAnnotationView, добавьте два UIImage свойства,

пихты tImage и secondImage, настроенные для сохранения.

Когда вы начинаете просмотр аннотаций, настройте оба изображения. (В точке, где вы назначаете изображение на пояснительном, а также сохранить его в новом firstImage собственности)

Тогда вы можете сказать

self.image = firstImage;

или

self.image = secondImage. 

Это поменяет соответствующее изображение на месте, сохраняя при этом другое изображение вокруг, чтобы восстановить.

Ваш код:

NSArray *selectedAnnotations = map.selectedAnnotations; for(id annotationView in selectedAnnotations) { [map  
deselectAnnotation:[annotationView annotation] animated:NO]; } 

не прав. Он запрашивает карту для массива аннотаций, а затем рассматривает их как аннотации VIEW.

Аннотация - объект модели данных. Он содержит данные, описывающие аннотацию.

Объект аннотации VIEW - это временный экранный объект, используемый для отображения аннотации на карте, если он в настоящее время виден. Для каждой аннотации на карте не всегда есть аннотации.