1

(階層の 3 番目の子から) 次のようにルート ビューをロードしようとしています。これは機能せず、以下のコードを実行すると次のエラーが発生します。

-[DetailViewController clickButton:]: unrecognized selector sent to instance 0x1161e00' 

コード:

 MapViewController *dvController = [[MapViewController alloc] initWithNibName:@"MapView" bundle:[NSBundle mainBundle]];
        [self.navigationController pushViewController:dvController animated:YES];
        [dvController release];
        dvController = nil;

これとまったく同じコードが他のビューでも機能します。これをデバッグする方法を考えてください。

4

2 に答える 2

1

MapViewControllerを作成し、それをViewControllerスタックにプッシュするために作成したコードは正しいです。

認識されないセレクターエラーは、送信しようとしているが、存在しないメソッド(clickButton:という名前)を呼び出そうとしていることを示しています。

スペルミスが疑われます。新しいビューを作成するためのコードを呼び出すボタンが定義されている可能性が高いと思います。メソッドは次のようになります。

-(void) clickButton: (id) sender {
    MapViewController *dvController = [[MapViewController alloc] initWithNibName:@"MapView"  bundle:[NSBundle mainBundle]];
    [self.navigationController pushViewController:dvController animated:YES];
    [dvController release];
    dvController = nil;
}

「:(id)sender」の部分があることを確認します。-(void)clickButton {}メソッドを実装する前に間違いを犯しましたが、実際にはパラメーターを送信するメッセージもありました。

于 2009-05-20T04:58:21.067 に答える
0
  1. ボタンをプログラムで作成し、ターゲットを clickButton として設定した場合は、clickButton メソッドが存在することを確認してください。

  2. clickButton メソッド (エラーによる) は、引数を受け取る必要があります。したがって、メソッドの定義は次のようになります

    • (IBAction)clickButton:(id)送信者;
  3. IBAction を IB のイベントにマップした場合は、:(id)sender 部分を省略できます。

  4. ナビゲーション ベースのアプリケーションで任意のビューからルート ビュー コントローラーを読み込むには、次を使用します。

    [[self navigationController:popToRootViewControllerAnimated:YES];

于 2009-05-20T13:30:43.847 に答える