2011-06-28 4 views
1

ボタンのターゲットを「self」以外のものに設定することはできますか? UIViewやUIWindowなど?ボタンのターゲットは常に「自己」ですか?私は別のものになることができますか?

私は試しましたが、エラーとしてEXC_BAD_ACCESSがあります。

+0

正確なクラッシュログを追加できますか?さらに重要なのは、アプリケーションをクラッシュさせようとした(コード)ものです。 –

答えて

2

ターゲットをinstance/objectに設定できます。インスタンス/オブジェクトは、設定したセレクタに応答する必要があります。それ以外の場合は、SIGABRT例外が発生します。

ほとんどの場合、いくつかのイベントでいくつかの操作を行うため、カスタムビューコントローラにターゲットを設定します。現在のビューコントローラでアクションを定義した場合は、Selfをターゲットとして設定します。あなたは、ビューコントローラのインスタンスaのアクションonButtonPressed:がトリガされますyourButtonをクリックしたときには、次のようないくつかの他のビューコントローラ

AViewController *a = [[AViewController alloc] init]; 
[yourButton addTarget:a action:@selector(onButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; 

それを設定することができます。 注:AViewControllerはメソッドonButtonPressed:を実装する必要があります。そうでない場合は、SIGABRTを受け取ります。

+0

ビューコントローラのインスタンス?あなたは私にいくつかのサンプルを与えることができますか?インスタンスコントローラとしてターゲットを割り当てた後、プログラム受信信号 "SIGABRT"を取得しました。私のボタンはグローバルにあり、同じ.mファイル内のグローバル関数を呼び出す – WondererInAsh

+0

ありがとう、EmptyStack。私はあなたの指示に従ってそれを行うことができますが、私の問題はまだ完全には解決されません。あなたが言ったように、コントローラはメソッドを実装する必要がありますが、私は別のファイルでグローバルメソッドを使用します。グローバルメソッドをヘッダー(例えばGlobal.h)に入れ、Global.hをAViewControllerにインポートしましたが、プログラムの種類はフリーズしました。なぜだろう? – WondererInAsh

+0

@SomethingLikesNothing、あなたはターゲットアクションを設定するためにどのようなコードを使用していますか? – EmptyStack

0

私は同じエラーがありました。 は[AViewControllerクラス]の変更で解決されました。

[yourButton addTarget:[AViewController class] action:@selector(onButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; 

私のクラスはすべてのアプリケーションで使用するライブラリなので、+記号として宣言されています。

@interface SocialClass : NSObject 

+ (void) gotoYoutube; 
+ (void) gotoFacebook; 
+ (void) gotoTwiter; 

@end 
関連する問題