2011-07-13 110 views
0

当某人接触到某个引脚时,我想显示相当多的人口统计数据,因此提供弹出窗口不会削减它。我想到一旦引脚被触动,我只需将一个tableviewController粘贴到NavigationController上,并且表视图将有权访问该对象并显示单个对象信息,每行一个项目和一个部分。当MKMapView被点击/按下/点击时MKAnnotation(Pin)显示TableView

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

我打得四处:

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

但这需要MKAnnotationView退还,我真的需要这个方法通过显示用户的所有数据的表格视图工作。我希望做一些简单的事情,比如userDidTouchPin方法......

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

回答

2

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

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

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

+0

谢谢亲切!不知道为什么我错过了“选择注释视图”部分的文档!我不确定你想要释放控制器,是不是由NavigationController处理?我之所以问,是因为我之前已经完成了“发布”,并且导致了问题。 – Justin

+0

除非你使用ARC或在alloc + init行上执行'autorelease',否则[需要'释放'](http://developer.apple.com/library/ios/#DOCUMENTATION/General/Conceptual/ DevPedia-CocoaCore/MemoryManagement.html)。如果出现问题,视图控制器中可能会出现其他问题。可能想问一个关于它的问题,并包含任何错误消息和堆栈跟踪。 – Anna