"selectAnnotation:annotation animated:YES" работает только при первом выделении любой ячейки

Вступление:

Я сделал приложение, где пользователь может искать конкретное место на карте. У меня есть mapView и представление списка, которое содержит UITableView, в котором я отобразил названия мест (результатов поиска), проанализированных из Google API.

Моя проблема:

Здесь моя проблема заключается в том, что когда я выбираю конкретную ячейку таблицы, в соответствии с именем место должно быть сфокусировано в mapView с его аннотацией, и аннотацию СЛЕДУЕТ выбирать автоматически. Поэтому я сделал этот код. Также я работаю, когда я делаю первый выбор, а также когда я делаю новый поиск, но со второго выбора он никогда не работает. (То есть)

1. Аннотационные работы

2. Масштабирование работает

3.Но из второго выберите "selectAnnotation: anotation animated: YES" НЕ РАБОТАЕТ. Пожалуйста, помогите решить эту проблему.

Заранее спасибо.

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
       [tableView reloadData];
       [mapView removeAnnotation:annotation];

        annotation = [[MKPointAnnotation alloc]init];
        NSDictionary *searchResults1 = [LocationDetails objectAtIndex:indexPath.row];
        annotation.title = [searchResults1  valueForKey:@"name"];
        annotation.subtitle=[searchResults1 valueForKey:@"formatted_address"];
        annotation.coordinate= CLLocationCoordinate2DMake([[searchResults1 valueForKey:@"lat"] doubleValue], [[searchResults1 valueForKey:@"lng"] doubleValue]);

        [mapView selectAnnotation:annotation animated:YES];
        [mapView addAnnotation:annotation];


     [mapView setRegion: MKCoordinateRegionMakeWithDistance(annotation.coordinate, 1000, 1000)  animated:YES];
     [tableView removeFromSuperview];
}

1 ответ

Решение

Добавьте этот код в ваш searchBarSearchButtonClicked: следующим образом:

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBarr
{

for(annotation in mapView.annotations)
{
    [mapView selectAnnotation:annotation animated:NO];

}
searchData = searchBarr.text;

Ваша ошибка заключалась в том, что вы не установили анимированное значение для selectAnnotation:animated: в NO, Следовательно, это показывает последнюю аннотацию. Который активен.

Другие вопросы по тегам