У меня есть приложение на основе навигации для iPhone, с которым я работаю, которое позволяет пользователю просматривать выбор из таблицы на карте.У меня есть аннотация, которая точно определяет выбранное пользователем местоположение на карте.В соответствии с обычным поведением, если пользователь нажимает на аннотацию, появляется выноска с информацией о местоположении.Здесь нет проблем.
Мой вопрос: я бы хотел, чтобы выноска автоматически появлялась из аннотации, как только пользователь выводится на экран, содержащий карту, чтобы пользователю не приходилось нажимать нааннотации, чтобы увидеть детали о месте, но я не уверен, как это сделать.У меня есть следующий метод в моем классе «MapViewController», где выполняется основная часть работы по отображению карты:
- (void)viewDidLoad {
[super viewDidLoad];
MKCoordinateRegion region;
MKCoordinateSpan span;
NavButtonAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
userCoord = delegate.userLocation.coordinate;
region.center = userCoord;
span.latitudeDelta = 0.4;
span.longitudeDelta = 0.4;
region.span = span;
[mapView setMapType:MKMapTypeStandard];
[mapView setZoomEnabled:YES];
[mapView setScrollEnabled:YES];
mapView.showsUserLocation = YES;
[mapView setRegion:region animated:YES];
RestaurantAnnotation *rAnnotation = [[RestaurantAnnotation alloc] init];
rAnnotation.title = restaurantObj.name;
rAnnotation.subtitle = restaurantObj.address;
rAnnotation.subtitle = [restaurantObj.address stringByAppendingFormat:@" %@", restaurantObj.hours];
rAnnotation.subtitle = [restaurantObj.address stringByAppendingFormat:@" %@", restaurantObj.phoneNumber];
CLLocationCoordinate2D newCoord = {restaurantObj.latitude, restaurantObj.longitude};
rAnnotation.coordinate = newCoord;
[mapView addAnnotation:rAnnotation];
}
MapViewController вызывается из следующего метода на предыдущем экране:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
Restaurant *rLocation = [restaurantList objectAtIndex:indexPath.row];
MapViewController *mapController = [[MapViewController alloc] initWithRestaurant:rLocation];
[self.navigationController pushViewController:mapController animated:YES];
[mapController release];
}
Я понимаю, что для этого нужно использовать следующий метод:
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
id<MKAnnotation> myAnnotation = [mapView.annotations objectAtIndex:0];
[mapView selectAnnotation:myAnnotation animated:YES];
}
Однако я не уверен, как это сделать.У меня не так много аннотаций, которые я использую одновременно, у меня есть только одна аннотация, с которой мне нужно работать.
Где я могу поместить этот метод в свое приложение и откуда мне его вызвать?Я вызываю этот метод из метода viewDidLoad и помещаю фактический метод в мой класс MapViewController?