ボタンのターゲットを「self」以外のものに設定することはできますか? UIViewやUIWindowなど?ボタンのターゲットは常に「自己」ですか?私は別のものになることができますか?
私は試しましたが、エラーとしてEXC_BAD_ACCESSがあります。
ボタンのターゲットを「self」以外のものに設定することはできますか? UIViewやUIWindowなど?ボタンのターゲットは常に「自己」ですか?私は別のものになることができますか?
私は試しましたが、エラーとしてEXC_BAD_ACCESSがあります。
ターゲットをinstance/object
に設定できます。インスタンス/オブジェクトは、設定したセレクタに応答する必要があります。それ以外の場合は、SIGABRT例外が発生します。
ほとんどの場合、いくつかのイベントでいくつかの操作を行うため、カスタムビューコントローラにターゲットを設定します。現在のビューコントローラでアクションを定義した場合は、Self
をターゲットとして設定します。あなたは、ビューコントローラのインスタンスa
のアクションonButtonPressed:
がトリガされますyourButton
をクリックしたときには、次のようないくつかの他のビューコントローラ
AViewController *a = [[AViewController alloc] init];
[yourButton addTarget:a action:@selector(onButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
それを設定することができます。 注:AViewControllerはメソッドonButtonPressed:
を実装する必要があります。そうでない場合は、SIGABRTを受け取ります。
ビューコントローラのインスタンス?あなたは私にいくつかのサンプルを与えることができますか?インスタンスコントローラとしてターゲットを割り当てた後、プログラム受信信号 "SIGABRT"を取得しました。私のボタンはグローバルにあり、同じ.mファイル内のグローバル関数を呼び出す – WondererInAsh
ありがとう、EmptyStack。私はあなたの指示に従ってそれを行うことができますが、私の問題はまだ完全には解決されません。あなたが言ったように、コントローラはメソッドを実装する必要がありますが、私は別のファイルでグローバルメソッドを使用します。グローバルメソッドをヘッダー(例えばGlobal.h)に入れ、Global.hをAViewControllerにインポートしましたが、プログラムの種類はフリーズしました。なぜだろう? – WondererInAsh
@SomethingLikesNothing、あなたはターゲットアクションを設定するためにどのようなコードを使用していますか? – EmptyStack
私は同じエラーがありました。 は[AViewControllerクラス]の変更で解決されました。
[yourButton addTarget:[AViewController class] action:@selector(onButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
私のクラスはすべてのアプリケーションで使用するライブラリなので、+記号として宣言されています。
@interface SocialClass : NSObject
+ (void) gotoYoutube;
+ (void) gotoFacebook;
+ (void) gotoTwiter;
@end
正確なクラッシュログを追加できますか?さらに重要なのは、アプリケーションをクラッシュさせようとした(コード)ものです。 –