MapKit и аннотации

голоса
0

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

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

- (id)initWithAnnotation:

- (void)setAnnotation:

- (void)drawRect:

и я с помощью

- (void)touchesBegan

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

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 = I; Тогда это ошибка. Ошибки я получаю: -

*** -[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 дней теперь !!!!

Заранее спасибо Cheryl

Задан 29/10/2009 в 15:56
источник пользователем
На других языках...                            


1 ответов

голоса
0

Шерил,

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

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

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

firstImage и secondImage, установить сохранить.

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

Затем, вы можете сказать,

self.image = firstImage;

или

self.image = secondImage.

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

Ваш код:

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

не является правильным. Он просит карту для массива аннотаций, а затем обрабатывает их как аннотации Views.

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

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

Ответил 12/11/2009 в 21:56
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more