触摸/按下/单击MKMapView中的MKAnnotation(Pin)时显示TableView

时间:2011-07-13 19:30:30

标签: xcode4 mkmapview mkmapviewdelegate

当有人触摸某个引脚时,我想显示相当多的人口统计数据,因此提供弹出窗口不会削减它。我想一旦触摸了引脚,我只会将一个tableviewController粘贴到NavigationController上,表视图将可以访问该对象并显示单个对象信息,每行一个项目和一个部分。

无论如何,我很难搞清楚MKMapViewDelegates方法,因为它们似乎没有做我需要的和/或允许我返回一个tableview或将该视图推送到导航控制器。

我玩了:

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

但这需要返回MKAnnotationView,我真的只需要通过向用户显示所有数据的表视图来使用此方法。我希望像userDidTouchPin方法那样简单......

任何人都有任何想法如何完成我想要做的事情?

1 个答案:

答案 0 :(得分:2)

如果您想在用户选择引脚(而不是其标注上的按钮)时执行某些操作,请实施mapView:didSelectAnnotationView:委托方法并在那里显示或推送您的详细视图控制器。

选定的注释对象可用作annotation参数的view属性:

- (void)mapView:(MKMapView *)mapView 
    didSelectAnnotationView:(MKAnnotationView *)view
{   
    YourDetailViewController *dvc = [[YourDetailViewController alloc] init...
    dvc.annotation = view.annotation;
    //present or push here
    [dvc release];
}

您可能需要检查选择了哪种类型的注释(例如,如果选择了MKUserLocation不执行任何操作等),您可能需要将view.annotation强制转换为您自己的注释类,以便轻松访问您可能拥有的任何自定义属性