0

このソリューションとまったく同じように、アプリの1つにラジオボタンを実装しました:

http://www.developers-life.com/radio-buttons-in-iphone-application.html

しかし、私のcheckboxButtonメソッドは次のようなものです:

- (IBAction)checkboxButton:(UIButton *)button{

     for (UIButton *but in self.arrayButtons) {
         if (but == button)
             [but setSelected:YES];
         else
             [but setSelected:NO];
     }
}

同じラジオ ボタン グループに属する 2 つのボタンがあります。ボタンの 1 つを選択すると、その画像が切り替えられたものに切り替わります。完全。問題は、他のものを選択すると、選択状態に選択されず、選択済みとして表示されている最初のものが引き続き選択済みとして表示されることです。

手がかりはありますか?

4

5 に答える 5

7
for (UIButton *but in [Your_View subviews]) {

if ([but isKindOfClass:[UIButton class]] && ![but isEqual:button]) {

            [but setSelected:NO];

        }

}

if (!button.selected)  {

        button.selected = !button.selected;
    }
于 2012-09-04T12:37:47.553 に答える
0

いくつかの微調整を行い、これをテストしたところ、動作します。

viewDidLoad: //すべてのボタンに同じセレクターが割り当てられていることを確認する

[button1 addTarget:self action:@selector(checkboxButton:) forControlEvents:UIControlEventTouchUpInside];
[button2 addTarget:self action:@selector(checkboxButton:) forControlEvents:UIControlEventTouchUpInside];
[button3 addTarget:self action:@selector(checkboxButton:) forControlEvents:UIControlEventTouchUpInside];

次に、ループをわずかに変更して、任意の配列内のオブジェクトの代わりにボタンのサブビューをスキャンします (より正確になるはずです)。

- (IBAction)checkboxButton:(UIButton *)button{

    for (UIButton *but in self.view.subviews) {//Change "self.view" to what ever view you are adding these subviews to.
        if (but == button){
            [but setSelected:YES];
        }else{
            [but setSelected:NO];
        }
    }
}

割り当てている選択状態の画像/テキストは、ボタンを離すまで表示されないことに注意してください。ボタンを離す前に押すと、強調表示された状態になります。これは単なるメモなので、それに応じて設定できます。

于 2012-09-04T14:00:37.573 に答える
0

ここに記載されているすべてのソリューションを試してすべて失敗した後、新しいアプローチを試してみましたが、完全に機能しました。

解決策はこれを変更することでした

- (IBAction)checkboxButton:(UIButton *)button{

     for (UIButton *but in self.arrayButtons) {
         if (but == button)
             [but setSelected:YES];
         else
             [but setSelected:NO];
     }
}

これに

- (IBAction)checkboxButton:(UIButton *)button{

     for (UIButton *but in self.arrayButtons) {
         if (but == button)
             [but setImage:selectedImage forState:UIControlStateNormal];
         else
             [but setImage:normalImage forState:UIControlStateNormal];
     }
}

明らかに、ボタンの状態を変更してもそのイメージは変わりません。少なくとも私にはうまくいきませんでした。

于 2012-09-05T01:26:00.207 に答える
0

以下を使用して選択するだけで、なぜそんなに複雑なものを使用しているのですか..

- (IBAction)checkboxButton:(UIButton *)button
{
    button.selected = !button.selected;
}

ボタンの画像が必要に応じて各状態のxibに設定されていることを確認してください。

于 2012-09-04T12:28:32.320 に答える