2016-11-08 3 views
2

私はUINavigationControllerのカスタムデリゲートクラスを持っています。デリゲートメソッドを同じデリゲートクラスのセレクタとして呼び出す方法

現在、私はUIBarButtonItemsに問題があります。

各BarItemに対して@Selectorを定義する必要があります。

これまで 私はこのような各バー項目のセレクタを定義します。

SEL selector = (menu == MyMenu) ? @selector(leftSelected:) : @selector(rightSelected:); 

問題がないので、彼らは私の委譲クラスでローカルメソッドであるため、インクルードが完璧な作業しています。

しかし、1点私は@Selectorとして私の代理メソッドを宣言する必要があるので、他のviewcontrollerのその定義。

ここでは、セレクタとしてデリゲートメソッドを定義する必要があります。

SEL selector = (menu == MenuLeft) ? @selector(leftMenuSelected:) : @selector(righttMenuSelected:); 

    if (menu == MenuTwo) { 
     selector = @selector(arrowMenuSelectedOut); 
    } 

    if (menu == MenuTwo){ 



     UIImage *image = [UIImage imageNamed:MENU_ARROW]; 


    UIBarButtonItem *btn= [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStyleDone target:self action:selector]; 
      btn.imageInsets = UIEdgeInsetsMake(0, 0, 0, -25.0); 

     return btn; 

    } 
    else 
    { 
     UIImage *image = [UIImage imageNamed:MENU_IMAGE]; 


     return [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:selector]; 
    } 

これは私の委任方法です。

@protocol myNavigationViewControllerDeleget<NSObject> 
- (void)arrowMenuSelectedOut; 
@end 

他のビューコントローラに配置されています。

- (void)arrowMenuSelectedOut 
    { 

     NSLog(@"button press"); 

    } 

ボタンの押下時に同じdelegateクラスのselectorとしてこのarrowMenuSelectedOutメソッドを使用したいと思います。

+2

あなたはどんな問題を抱えていますか? '@ selector 'を使ってどのような問題が起きているのかははっきりしません。 – rmaddy

+0

の問題は、上記の方法で定義した場合に@deflectorをデリゲートメソッドとして作成することができないことです。 –

+0

まだ明確ではありません。セレクタを実際にどのように作成し、実際に使用しているかを明確に示す質問を更新してください。また、エラーなどの追加の詳細も含めます。 – rmaddy

答えて

2

代理人を呼びたい場合は、このように試してみてください。

[self.mydelegate arrowMenuSelectedOut]; 

かの場合で

UIBarButtonItem *btn = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStyleDone target:self.mydelegate action:@selector(arrowMenuSelectedOut)]; 

もチェックあなたはそれがnilであってはならない適切に委譲定義しました。 これを試してください

self.mydelegate=self; 
2

コメントに記入したエラー(質問に記載する必要があります)に基づいて、ボタンを作成するときに間違ってtargetを渡しているという問題があります。

変更:

UIBarButtonItem *btn = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStyleDone target:self action:selector]; 

へ:

UIBarButtonItem *btn = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStyleDone target:self.mydelegate action:selector]; 

変更された唯一のものは、targetパラメータ値です。

+0

1時間にチェックさせてください –

+0

今回はチェックしますが、エラーはありませんが、メソッドを呼び出すことはありません –

+1

あなたは 'self.mydelegate'が'ボタンを作成しますか? – rmaddy

関連する問題