0

当我点击地图标注中的披露按钮时,我希望加载另一个视图。

我在 AnnotationView 实现文件的 initWithAnnotation 方法中使用以下内容将按钮添加到标注(我只显示相关代码):

- (id)initWithAnnotation:(id<MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier

{

 self.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];

}

我还在 MapViewController 实现文件中添加了以下 controllTapped 方法,用于检测何时点击了披露按钮:

-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control

{

    DetailViewController *dvc = [[DetailViewController alloc] init];
    [self.navigationController pushViewController:dvc animated:YES];



}

我还为 UI 创建了一个带有 .XIB 的新 detailDisclosure 类。这是当用户点击公开按钮时我想要加载的视图。

那么,为什么当用户点击公开按钮时什么都没有发生呢?

4

2 回答 2

1
UIButton *btnGo = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[btnGo addTarget:self action:@selector(goToLocation:) forControlEvents:UIControlEventTouchUpInside];
pinView.rightCalloutAccessoryView=btnGo;


-(void) goToLocation:(UIButton *) sender
{
}
于 2013-04-10T05:23:51.590 回答
0

MKMapView为此,您必须使用委托方法,如下所示,以识别您的CustomAnnotationClass

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
    id <MKAnnotation> annotation = [view annotation];
    if ([annotation isKindOfClass:[CustomAnnotationClass class]])
    {
        DetailViewController *dvc = [[DetailViewController alloc] init];
        [self.navigationController pushViewController:dvc animated:YES];
    }
}

让我知道,如果你让它工作。

于 2013-04-10T07:01:34.890 回答