0

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

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

我玩过:

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

但这需要返回一个 MKAnnotationView,而我真的只需要通过向用户显示所有数据的表格视图来使用此方法。我希望有一些简单的东西,比如 userDidTouchPin 方法......

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

4

1 回答 1

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 转换为您自己的注释类,以便轻松访问您可能拥有的任何自定义属性。

于 2011-07-13T19:58:51.150 回答