Как выбрать аннотацию и передать идентификатор на конкретную страницу с подробностями? - PullRequest
2 голосов
/ 02 сентября 2011

Я добавил beepid как строку в обычай класса myannotation, и это покой:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
    DLog(@"calloutAccessoryControlTapped");

    /// detail page opening but beeid not passing

    MyAnnotation *myAnnot = (MyAnnotation *)view.annotation;





    BeepsDetail *objCont = [[BeepsDetail alloc] initWithNibName:@"BeepsDetail" bundle:nil];
    objCont.mId = myAnnot.beepid;
    objCont.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController: objCont animated: YES];

    //[paramDic setValue:[mObject.mDic objectForKey:@"beepid"] forKey:@"beepid"];
    [objCont release];


}

1 Ответ

2 голосов
/ 02 сентября 2011

Линия

NSMutableDictionary *dic = [placeName objectAtIndex:MKAnnotationView.annotion];

выдает ошибку, потому что MKAnnotationView - это класс , а в классе нет метода annotation. Вы бы использовали view.annotation, поскольку view является экземпляром MKAnnotationView, который был выбран. Также, annotion написано неправильно.

Однако это все равно не сработает, поскольку view.annotation - это объект аннотации, а не целочисленный индекс в вашем массиве placeName.

Вы говорите, что «нажимаете на стрелку вправо», что подразумевает правую дополнительную кнопку выноски в выноске (а не саму аннотацию). В этом случае вы должны определить выбор, используя метод делегата calloutAccessoryControlTapped вместо didSelectAnnotationView.

В обоих случаях вы сначала получите доступ к объекту аннотации с помощью view.annotation, а затем с помощью некоторого свойства (возможно, пользовательского) объекта аннотации определите подробные данные.

Например, если вы создали собственный класс MKAnnotation (вместо использования MKPointAnnotation), вы можете добавить к нему свойство beepId, установить его при создании аннотации и в методе делегата, который вы можете получить это так:

MyAnnotationClass *myAnnot = (MyAnnotationClass *)view.annotation;
objCont.mId = myAnnot.beepid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...