iPhone: addAnnotation не работает при вызове из другого представления - PullRequest
0 голосов
/ 25 мая 2010

У меня есть два представления, первое представление имеет MKMapView с именем ridesMap. Второе представление - это просто представление с UITableView в нем. Когда вы нажимаете кнопку сохранения во втором представлении, он вызывает метод из первого представления:

// Get my first views class
MyRidesMapViewController *rideMapView = [[MyRidesMapViewController alloc] init];
// Call the method from my first views class that removes an annotation
[rideMapView addAnno:newRidePlacemark.coordinate withTitle:rideTitle.text withSubTitle:address];

Это правильно вызывает метод addAnno, который выглядит следующим образом:

- (void)addAnno:(CLLocationCoordinate2D)anno withTitle:(NSString *)annoTitle withSubTitle:(NSString *)subTitle {

    Annotation *ano = [[[Annotation alloc] init] autorelease];

    ano.coordinate = anno;

    ano.title = annoTitle;

    ano.subtitle = subTitle;

    if ([ano conformsToProtocol:@protocol(MKAnnotation)]) {

        NSLog(@"YES IT DOES!!!");

    }

    [ridesMap addAnnotation:ano];

}//end addAnno

Этот метод создает аннотацию, которая соответствует MKAnnotation, и он предполагает добавить эту аннотацию на карту с помощью метода addAnnotation. Но аннотация никогда не добавляется.

Я НИКОГДА не получаю никаких ошибок, когда аннотация не добавляется. Но он никогда не появляется при вызове метода.

С чего бы это? Кажется, что я все сделал правильно, и что я передаю правильную MKAnnotation методу addAnnotation. Итак, я не понимаю, почему это никогда не бросает булавку? Может ли это быть потому, что я вызываю этот метод из другого представления? Почему это имеет значение?

1 Ответ

2 голосов
/ 25 мая 2010

Вы создаете второй экземпляр MyRidesMapViewController. Вы должны добавить аннотацию к оригинальному экземпляру. Вы должны предоставить некоторые средства для передачи этого экземпляра на второй вид. Есть много возможных способов сделать это; оптимальный выбор зависит от того, как структурировано ваше приложение (чего мы не знаем).

...