1

セグエを使用して (ストーリーボードに直接ドラッグして) ビューをプッシュすると、正常に動作し、次のビューが読み込まれます。ただし、(マップで) PIN の右矢印をクリックしたときにビューをプッシュするために、これらすべてをプログラムで実装しようとすると、少し混乱します:

編集

 -(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
    NSLog(@"calloutAccessoryControlTapped: enseigneDeLaStation");
    [self performSegueWithIdentifer:@"You identifier" sender:self];
}

私はこのエラーを受け取りました:

Receiver Type 'MyFirstViewController' for instance message does not declare a method with selector performSegueWithIdentifer:sender:
4

2 に答える 2

5

UIViewControllerインスタンスメソッドを使用する必要がありますperformSegueWithIdentifier:sender:。ビューコントローラーのストーリーボードファイルから指定された識別子でセグエをプログラムで開始します。

これがドキュメントです。

コード例は次のようになります: (ビュー コントローラーでこれを呼び出していると仮定します。

[self performSegueWithIdentifier:@"Your identifier" sender:self];

したがって、コードの場合は次のようになります。

-(IBAction)goToNextView{
    NSLog(@"The button is clicked");
    [self performSegueWithIdentifier:@"Your identifier" sender:self];
}

インターフェイスビルダーでセグエ識別子を設定することを忘れないでください。また、コードとインターフェイス ビルダーの両方に同じ識別子があることを確認してください。

于 2012-01-09T10:28:13.840 に答える
3

マレクは正しいです。Pfitz の例は返されます

インスタンス メッセージのレシーバー タイプ 'MyFirstViewController' は、セレクター performSegueWithIdentifer:sender を使用してメソッドを宣言しません。

これはタイプミスによるものです。正しい方法は

[self performSegueWithIdentifier:@"You identifier" sender:self];
于 2012-02-08T22:07:46.610 に答える