Ответ 1
Сначала добавьте аннотацию к карте и в метод viewForAnnotation
, установите rightCalloutAccessoryView
на кнопку типа, например UIButtonTypeDetailDisclosure (я не думаю, что по умолчанию доступна голубая информационная кнопка).
Нажатие кнопки вызовет метод делегата calloutAccessoryControlTapped
. В этом методе снимите отметку с аннотации и покажите свой popover. Например:
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
[mapView deselectAnnotation:view.annotation animated:YES];
YourContentViewController *ycvc = [[YourContentViewController alloc] init...
UIPopoverController *poc = [[UIPopoverController alloc] initWithContentViewController:ycvc];
[ycvc release];
//hold ref to popover in an ivar
self.annotationPopoverController = poc;
//size as needed
poc.popoverContentSize = CGSizeMake(320, 400);
//show the popover next to the annotation view (pin)
[poc presentPopoverFromRect:view.bounds inView:view
permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
[poc release];
}
YourContentViewController - это подкласс UIViewController, который вы можете кодировать как любой другой контроллер представления. Приложение "Карты" похоже, что в содержимом есть UITableView.