0

コードに何か問題があると思いますが、それが見つかりません。

ボタンを 1 回クリックしてビューを切り替えたいのですが、leftCalloutAccessoryView常に同じエラーが表示されます。

NSInvalidArgumentException', reason: '
-[ThirdViewController showDetailView:]: unrecognized selector sent to instance

ここに私のコード:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    if ([annotation isKindOfClass:[MKUserLocation class]])
    {
        return nil;
    }
    else
    {
        MKPinAnnotationView *annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"loc"];
        annotationView.canShowCallout = YES;
        UIButton *detailButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];

        [detailButton addTarget:self action:@selector(showDetailView:) forControlEvents:UIControlEventTouchUpInside];
        annotationView.rightCalloutAccessoryView=detailButton;
        annotationView.enabled = YES;

        UIImage *image = [UIImage imageNamed:@"logo.jpeg"];
        UIImageView *imgView = [[UIImageView alloc] initWithImage:image];
        annotationView.leftCalloutAccessoryView = imgView;
        annotationView.image = [UIImage imageNamed:@"pin.png"];
        return annotationView;
    }
}
- (IBAction)detailButton:(UIButton *)sender
{
    ThirdViewController *infoView = [[ThirdViewController alloc] init];
    [self.navigationController pushViewController:infoView animated:YES];
    NSLog(@"pushed Button!!!!!!");

}

私のストーリーボードからの小さなスクリーンショット:

ここに画像の説明を入力

助けてくれてありがとう!

よろしくお願いしますCTS

4

1 に答える 1

2

addTargetコードは、ボタンがメソッドを呼び出す必要があることを示していますshowDetailView:

[detailButton addTarget:self action:@selector(showDetailView:) forControlEvents...

しかし、そのような方法はありません(それがエラーの意味です)。


このメソッドの名前を次のように変更します。

- (IBAction)detailButton:(UIButton *)sender

に:

- (IBAction)showDetailView:(UIButton *)sender
于 2013-02-07T17:13:33.020 に答える