2016-10-25 2 views
0

私はUIButton TouchUpInsideコントロールイベントの同じアクションが必要です。例:どのように私は、目的のCのUIButtonのaddTargetメソッドをオーバーライドすることができます

[button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; 

buttonActionをアプリケーションから一般化したいと考えています。これを行うための最良の方法は何か。これはカテゴリを使用して可能ですか?またはサブクラス化?

ありがとうございます。

答えて

0

このメソッドをクラス内に追加し、クラス名をターゲットに入れることができます。

YourClass *class = [YouClass alloc]init]; 
[button addTarget:class action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; 

か、この

[button addTarget:[A getClassA] action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; 

@implementation A 
    +(YouClass *) getClassA{ 
    //get instance if already initialized or init it 
    //and return the instance 
    } 
@end 
0

のようなソリューションをアクセサ使用してクラスを取得することができ、あなたが達成したいかに依存します。一般的な操作で、ボタンが使用されているアプリケーション全体でイベントを修正したい場合は、カテゴリを使用すると問題ありません。 ボタンにカスタムレイアウトを追加するなど、基本的なクラスに新しいビヘイビアーを追加する場合は、サブクラス化が適しています。

私はこれがあなたのアプローチに役立つことを願っています!

+0

返信いただきありがとうございます。はい、タッチアップイベントのジェネリックアクションが必要です。カテゴリを試します。 – user706638

関連する問題