0

エラーがあります:

2013-08-01 01:09:18.433 VstupHelper[28332:11303] -[VHMasterViewController popViewController:]: unrecognized selector sent to instance 0x7566410
2013-08-01 01:09:18.434 VstupHelper[28332:11303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[VHMasterViewController popViewController:]:

これが私のコードです:

UIButton *bt=[UIButton buttonWithType:UIButtonTypeCustom];
    [bt setFrame:CGRectMake(0, 0, 50, 30)];
    [bt setImage:[UIImage imageNamed:@"menu.png"] forState:UIControlStateNormal];
    [bt addTarget:self action:@selector(popViewController:) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *leftButton=[[UIBarButtonItem alloc] initWithCustomView:bt];
    self.navigationItem.leftBarButtonItem=leftButton;

    self.navigationItem.leftBarButtonItem.target = self.revealViewController;
    self.navigationItem.leftBarButtonItem.action = @selector(revealToggle:);

私は英語が苦手なので、わかりにくかったらすみません。

4

1 に答える 1

2

いくつかの問題があります。

1)あなたはpopViewController:、私がサブクラスであると仮定するものをUIViewController呼び出していますUINavigationController.

2)popViewController:そのトランジションをアニメートするかどうかの bool 値を取ります。アクションでは、デフォルトで送信者に渡されます。

3) 次に、ボタンのターゲットとアクションを再割り当てします (ただし、これらはイニシャライザUIBarButtonItemを使用して作成したときに呼び出されません: docs を参照してください)。initWithCustomView:


これを修正する方法:

1) ボタン ハンドラー用に作成したメソッドを呼び出します。

UIButton *bt=[UIButton buttonWithType:UIButtonTypeCustom];
[bt setFrame:CGRectMake(0, 0, 50, 30)];
[bt setImage:[UIImage imageNamed:@"menu.png"] forState:UIControlStateNormal];
[bt addTarget:self action:@selector(buttonTouched:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *leftButton=[[UIBarButtonItem alloc] initWithCustomView:bt];
self.navigationItem.leftBarButtonItem=leftButton;

2)そのメソッドで、View Controllerをポップするか、実際にやりたいことを何でもします:

- (void)buttonTouched:(id)sender 
{
    [self.navigationController popViewController:YES]; 
    //Or what you assigned to the button action:
    [self.revealViewController revealToggle:(not sure what you're supposed to have here)];
}
于 2013-07-31T22:24:21.003 に答える