尝试获取正确的标注按钮以加载另一个视图控制器

时间:2011-03-12 19:28:25

标签: ios xcode ios4

我正在创建一个徒步旅行并使用mapkit。我有地图加载,我使用自定义图标作为引脚,并从plist文件加载我的GPS坐标。我的标注工作正常。我的问题是我想要正确的标注按钮在每个停止点(停止和MP3的图片)上的另一个屏幕上加载不同的信息。我会为巡演中的每个站点加载不同的视图控制器吗?如果是这样,我将在下面添加什么代码以使视图控制器名为Detailcontroller load?

 - (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
    NSLog(@"I've been tapped");
}

如果我离开了,有人可以指出我正确的方向,我将不胜感激。我为我的措辞道歉,因为我对编码/应用程序开发并不熟悉。

1 个答案:

答案 0 :(得分:0)

我希望并期望您为每个停靠点使用相同类型的视图控制器,但设置不同的数据。当我做了这样的事情时,我的注释一直是地图上每个兴趣点的数据对象,所以我会这样做:

-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
    StopInfo *stopInfo = view.annotation;
    StopInfoDetailController *detailController = [[StopInfoDetailController alloc] initWithNibName:nil bundle:nil];
    detailController.stopInfo = stopInfo;
    [mapView.navigationController pushViewController:detailController animated:YES];
    [detailController release];
}

在这种情况下,StopInfo将是注释对象的类。它应该包含细节控制器需要做的事情:MP3文件名,停止位置,停止图像文件名,停止描述等。

请注意,您的地图上实际上可能有几种不同的注释。也许有些人在你的徒步旅行中停下来,而其他人则是旅行中没有的兴趣点,食品供应商,浴室等。在这种情况下,你可能想为每种类型的肛门使用不同的视图控制器,所以你要查看注释对象,找出要实例化的视图控制器类型。