Отображение информации о контакте по умолчанию

Я работаю с MKPinAnnotationView булавками аннотаций над MKMapView. В представлении, которое я разрабатываю, есть карта с центром на булавке. Когда я вызываю представление, булавка опускается вниз, и если я нажимаю на нее, отображается информация аннотации (canShowCallout = YES). Как я могу получить эту выноску, когда открываю представление? Не нажимая на булавку аннотации.

Спасибо за чтение.

Отредактировано:

Я использую этот код.

- (void)viewDidLoad {

    [super viewDidLoad];

    AddressAnnotation *annotation = [[[AddressAnnotation alloc] initWithCoordinate:self.currentAnnotationCoordinate] autorelease];
    [self.mapView addAnnotation:annotation];
    [self zoomCoordinate:self.currentAnnotationCoordinate];
}

- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation {

    // If it's the user location, just return nil.
    if ([annotation isKindOfClass:[MKUserLocation class]])
        return nil;
    else { // Handles the other annotations.
        // Try to dequeue an existing pin view first.
        static NSString *AnnotationIdentifier = @"AnnotationIdentifier";
        MKPinAnnotationView *pinView = (MKPinAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];

        if (!pinView) {
            // If an existing pin view was not available, creates one.
            MKPinAnnotationView *customPinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease];
            customPinView.animatesDrop = YES;
            customPinView.canShowCallout = YES;

            // Adds a detail disclosure button.
            UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
            [rightButton addTarget:self action:@selector(showDetails:) forControlEvents:UIControlEventTouchUpInside];
            customPinView.rightCalloutAccessoryView = rightButton;

            return customPinView;
        } else
            pinView.annotation = annotation;
    }

    return nil;
}


- (void)mapViewDidFinishLoadingMap:(MKMapView *)theMapView {

    AddressAnnotation *annotation = [[[AddressAnnotation alloc] initWithCoordinate:self.currentAnnotationCoordinate] autorelease];

    for (id<MKAnnotation> currentAnnotation in mapView.annotations) {       
        if ([currentAnnotation isEqual:annotation]) {
            [mapView selectAnnotation:currentAnnotation animated:FALSE];
        }
    }
}

Отредактировано:

Вызов didAddAnnotationViews: вместо mapViewDidFinishLoadingMap: (как прокомментировал aBitObvious), он отлично работает.

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {

    id<MKAnnotation> myAnnotation = [self.mapView.annotations objectAtIndex:0];
    [self.mapView selectAnnotation:myAnnotation animated:YES];
}

person Daniel García Baena    schedule 19.11.2010    source источник
comment
Спасибо, отлично работает вот так. Единственная тень - это то, что булавка показывает информацию до касания карты (я анимирую раскрывающийся список). Как мне это сделать после?   -  person Daniel García Baena    schedule 20.11.2010
comment
Нет ли способа узнать, когда булавка касается карты?   -  person Daniel García Baena    schedule 20.11.2010
comment
Насколько мне известно, если вы сами не рисуете анимацию.   -  person    schedule 20.11.2010
comment
В ПОРЯДКЕ. Единственная проблема сейчас в том, что я не могу поставить вам зеленую галочку, потому что вы только оставляли комментарии. В любом случае, спасибо вам большое.   -  person Daniel García Baena    schedule 20.11.2010


Ответы (1)


Возможный дубликат: Как вызвать представление выноски MKAnnotationView, не касаясь закрепить?

Вы хотите позвонить [mapView selectAnnotation:].

person GendoIkari    schedule 19.11.2010
comment
Извините за повторяющийся вопрос. Я вызываю метод selectAnnotation: после добавления аннотации в метод viewDidLoad, но мне все еще нужно щелкнуть по булавке, чтобы отобразить информацию. - person Daniel García Baena; 19.11.2010
comment
Вы пытались вызвать selectAnnotation из (void) mapViewDidFinishLoadingMap: (MKMapView *) mapView, как следует из первого ответа? - person GendoIkari; 19.11.2010