2

Interface Builder に 3 つのボタンを設定しました。それぞれが touchUpInside を介して btnSelection に関連付けられています。

- (IBAction)btnSelection:(id)sender {
    NSLog(@"tag: %i", [sender tag]);
}

私のコンソールでは、最初のクリックは正しく登録されますが (2 秒ほどの遅延の後、少し奇妙に思えます)、その後 3 つのボタンのいずれかに触れると、最初に前のタグ値がログに記録され、次に新しいタグがログに記録されます。

#1 をタッチ (タグ = 0 のボタン):

タグ:0

タッチ #2 (tag=1 のボタン):

タグ:0 タグ:1

タッチ #3 (tag=2 のボタン):

タグ:1 タグ:2

等々。

毎回 2 つのイベントがログに記録される理由がわかりません (最初のイベントは以前に触れたボタンです。

4

4 に答える 4

3

考えられる理由の 1 つは、ボタンをイベントに接続し、そのボタンをコピーしてイベントを再度接続した場合、btnSelection関数を 2 回呼び出す可能性があることです。

インターフェイス ビルダーで、コールバックが 1 つしかないことを確認します。btnSelection

于 2009-08-06T21:16:09.243 に答える
1

これが質問に含まれていなかったことは知っていますが、カスタムの uitableviewcell に uibutton がある場合は、セルを再利用するように設定するときに選択設定をいじらないようにしてください。(再利用のために設定されているセルをいじると、セル内のすべてのサブビューがおかしくなり、物が積み重なったり、実際にセルを再ロードしているときにボタンのようなものがトグルするように見えることがあります)またはあなたの細胞が作られた後

于 2013-05-06T21:25:38.673 に答える
1

コールバックにブレークポイントを置き、呼び出しがどこから来ているかを確認します。あなたが説明することは、何百もの何千ものアプリでうまく機能します.

(問題はありませんが、それはあなたのコードです。:)

于 2010-12-23T00:30:40.560 に答える