MKMapView setSelected: animated: не работает в первый раз - PullRequest
3 голосов
/ 20 января 2012

Когда я вызываю метод MKMapView, setSelected: animated: для аннотации это не работает. Но если я позвоню в следующий раз с другой аннотацией, она начнет работать.

У кого-нибудь есть идеи, что может быть не так? Спасибо

Код (2 соответствующих метода):

- (void)viewDidLoad {
    [super viewDidLoad];
    annotations = [[NSMutableArray arrayWithCapacity:30] retain];
    for (NSDictionary *entry in entries) {
        double lat = [[entry objectForKey:@"lat"] doubleValue];
        double lon = [[entry objectForKey:@"lon"] doubleValue];

        NSString *PLZ = [entry objectForKey:@"PLZ"];
        NSString *name = [NSString stringWithFormat:@"%@%@", PLZ.length != 0? [NSString stringWithFormat:@"%@, ", PLZ] : @"", [entry objectForKey:@"Ort"]];
        NSString *address = [NSString stringWithFormat:@"%@ - %@", [entry objectForKey:@"Grund"], [entry objectForKey:@"Zeit"]];

        CLLocationCoordinate2D coordinate;
        coordinate.latitude = lat;
        coordinate.longitude = lon;          
        MyLocation *annotation = [[[MyLocation alloc] initWithName:name address:address coordinate:coordinate] autorelease];
        [mapView addAnnotation:annotation];
        [annotations addObject:annotation];
    }

    NSLog(@"LOaded");
    [self zoomToFitMapAnnotations];
}



- (void)showAnnotation:(int)i {
    if (i <= [annotations count]) {
        [mapView setSelectedAnnotations:[NSArray arrayWithObject:[annotations objectAtIndex:i]]];
    }
}

Последний метод showAnnotation - это тот, который вызывается, и отображается аннотация. Еще раз, это не работает с аннотацией, которую я называю первый раз. Независимо от того, сколько раз я это называю. Но если я изменю аннотацию, она начинает работать, даже с аннотацией, которую я назвал первой (надеюсь, это имеет смысл).

Кроме того, это работает даже в первый раз: [mapView setSelectedAnnotations:[NSArray arrayWithObject:[annotations objectAtIndex:i]]];

Ответы [ 2 ]

2 голосов
/ 16 марта 2012

Вы не должны вызывать этот метод самостоятельно.

Согласно документации MKAnnotationView:

Вы не должны вызывать этот метод напрямую.Объект MKMapView вызывает этот метод в ответ на взаимодействие пользователя с аннотацией.

Вместо этого попробуйте предложенный метод Дипена (setSelectedAnnotations).

1 голос
/ 20 января 2012

Использование это может вам помочь

    [mapView1 setSelectedAnnotations:[NSArray arrayWithObjects:addAnnotation,nil]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...