Удалить аннотацию из MKMapView, которая находится в другом представлении.

У меня два взгляда. Первый — это MKMapView с некоторыми аннотациями. При нажатии на UIButton в стек добавляется второе представление. У этого есть UITableView со списком аннотаций, которые соответствуют аннотациям карты. Итак, когда вы нажимаете кнопку удаления, как я могу вызвать свой MKMapView, который находится в другом представлении, чтобы я мог удалить аннотацию. Мой MKMapView объявлен в моем делегате приложения, а также в моем текущем классе. Я пытаюсь использовать следующее, но это не работает:

RideAppDelegate *appDelegate = (RideAppDelegate *)[[UIApplication sharedApplication] delegate];
Annotation *ano;
CLLocationCoordinate2D anoPoint;
anoPoint.latitude = [[eventToDelete valueForKey:@"latitude"] doubleValue];
anoPoint.longitude = [[eventToDelete valueForKey:@"longitude"] doubleValue];
ano = [[[Annotation alloc] init] autorelease];
ano.coordinate = anoPoint;
[appDelegate.ridesMap removeAnnotation: ano];
[appDelegate release];

Должно быть, я пытаюсь неправильно получить доступ к MKMapView моего другого представления?


person Nic Hubbard    schedule 18.05.2010    source источник


Ответы (1)


  • ridesMap должен быть MKMapView, который должен быть ivar appDelegate. Это свойство с (сохранить)? Он создан и назначен с помощью self.ridesMap = [[MKMapView alloc] init] или аналогичного?
  • Вы уверены, что Annotation следует протоколу MKAnnotation?

(зачем выпускать appDelegate? Вы не владеете им и не сохраняете его.)

person Adam Eberbach    schedule 18.05.2010
comment
Да, я уверен, что Annotation следует протоколу MKAnnotation, так как я могу создавать аннотации, используя его. ridesMap — это свойство с сохранением. Где мне его создать и выделить MKMapView, как показано выше? - person Nic Hubbard; 18.05.2010
comment
Если это должно быть свойство в вашем appDelegate, вероятно, вам следует создать его в applicationDidFinishLaunching. Если это не живой объект, вы не можете использовать для него метод. - person Adam Eberbach; 18.05.2010