iphone - プログラムでスイッチをscrollviewに追加すると例外がスローされる

原文 iphone objective-c ios xcode

ストーリーボードを使用していて、スクロールビューウィンドウをビューにドラッグしました。私のコードでは、何らかの方法で正しく初期化されていないスイッチオブジェクトをプログラムで作成しています。スイッチはビューに正しく表示されますが、スイッチをクリックするたびに、例外がスローされます

「インスタンス0x6a786f0に認識されないセレクタが送信されました」

また、On / OffテキストをYes / Noに編集しようとしたところ、スイッチにアクセスしても同じ例外がスローされました。明らかに、スイッチの作成と正しいデリゲートの設定などで何かを見落としました。

スイッチを作成するための私のコードは..

        UISwitch *switchControl = [[UISwitch alloc] initWithFrame:CGRectMake(x, y, 60, 20)];
        [switchControl addTarget:inputsView action:@selector(actionSwitch:) forControlEvents:UIControlEventTouchUpInside];
        [switchControl setBackgroundColor:[UIColor clearColor]];
        //[(UILabel *)[[[[[[switchControl subviews] lastObject] subviews]
        //               objectAtIndex:1] subviews] objectAtIndex:0] setText:@"Yes"];
        //[(UILabel *)[[[[[[switchControl subviews] lastObject] subviews]
        //               objectAtIndex:1] subviews] objectAtIndex:1] setText:@"No"];


        [inputsView addSubview:switchControl];


inputViewは、.hファイルに作成したUIScrollViewの名前です。

スイッチのクリック時に例外が呼び出された場合、エラーの「理由」は理由: '-[UIScrollView actionSwitch:]です。テキストを調整しようとしてエラーが呼び出された場合、「理由」は理由です: '-[UIImageView setText:]

私が欠けているものについての助けがあれば素晴らしいでしょう。

ありがとう
答え
例外は正しく、UIScrolViewにはメソッドactionSwitch:がありません。 addTarget:のターゲットパラメータは、selector:引数を受け取るオブジェクトです。

投稿したコードがactionSwitch:メソッドを持つクラスにある場合、次のようにselfをターゲットとして使用します。

[switchControl addTarget:self action:@selector(actionSwitch:) forControlEvents:UIControlEventTouchUpInside];


そして付記として。 UISwitchの場合、通常はUIControlEventValueChangedに対してメソッドを呼び出す必要があります。これにより、ユーザーがスイッチに触れるだけでスイッチが「切り替え」られない場合、メソッドは呼び出されません。

「UISwitchを 'self'に変更しようとしたところ、エラーが引き続き発生します。actionSwitchメソッドを作成していません。」

はい。ターゲットとして渡したものはすべて、セレクタとして渡されたセレクタ/メソッドを実装する必要があるため、アプリケーションは引き続きクラッシュします。

ビューコントローラは、このメソッドを実装するのに理想的な場所です。このイベントターゲットの非常に標準的な実装は次のようになります。

-(void)actionSwitch:(UISwitch *)theSwitch{
    if (theSwitch.isOn){
        // Switch was switched on respond accordingly 
    }
    else {
        // Switch was switched off respond accordingly 
    }
}
関連記事

iphone - MPMoviePlayerエラーコードのリストはありますか

iphone - iPhoneのキーボードボタンを複製しようとしています

iphone - Corona SDKを使用して画像内の画像を切り取る

iphone - UILabelで単語をラップする方法

iphone - 現在から90日後までの日数をどのように決定しますか?

iphone - コンボボックスオプションを無効にせずに選択不可にすることはできますか? [重複]

iphone - iPhoneでのKerberos認証

iphone - 画像とテキストを使用したiOS印刷

iphone - ライブラリ内のシンボルまたはそれらのシンボルのエクスポートされたイメージのどちらが優れていますか?

iphone - popViewControllerAnimatedアニメーションがiOS5で機能しない