0

私は2つのクラスAとBを持っています。クラスAでは次を使用します:

@interface A : B

クラス B には、次のコード行があります。

self.navigationItem.rightBarButtonItem = [UIBarButtonItem barItemWithImage:[UIImage imageNamed:@"Add-button-normal"]
                                                          highlightedImage:[UIImage imageNamed:@"Add-button-active"]
                                                                    target:self
                                                                    action:@selector(showPopoverUI:)];

クラス A でこの項目にアクセスするにはどうすればよいですか。次のコード行を試してみましたが、うまくいきません。

self.navigationItem.rightBarButtonItem = [UIBarButtonItem barItemWithImage:[UIImage imageNamed:@"Add-button-normal"]
                                                          highlightedImage:[UIImage imageNamed:@"Add-button-active"]
                                                                    target:self.parentViewController
                                                                    action:@selector(showPopoverUI:)];

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

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[B showPopoverUI:]: unrecognized selector sent to class 0x226308'
4

3 に答える 3

1

superクラスメソッドを呼び出したいので、呼び出す必要がありますsuper

これの代わりに呼び出す必要がありますsuper navigationItem...

また、

self.navigationItem.rightBarButtonItem = [UIBarButtonItem barItemWithImage:[UIImage imageNamed:@"Add-button-normal"]
                                                          highlightedImage:[UIImage imageNamed:@"Add-button-active"]
                                                                    target:self
                                                                    action:@selector(showPopoverUI:)];
于 2013-01-22T17:23:01.493 に答える
1

2 番目の例では、parentViewController をターゲットにしていますが、代わりに引き続き自分自身をターゲットにする必要があります。

于 2013-01-22T18:00:39.683 に答える
1

継承している場合は、 self だけを使用して、メソッドを自分のものであるかのように呼び出すことができるはずです

試す:

self.navigationItem.rightBarButtonItem = [UIBarButtonItem barItemWithImage:[UIImage imageNamed:@"Add-button-normal"] highlightedImage:[UIImage imageNamed:@"Add-button-active"]target:self action:@selector(showPopoverUI:)];
于 2013-01-22T17:24:37.947 に答える