-1

に奇妙な問題がありradio buttonます。私は2つの画像を使用して使用しUIButtonましたが、通常は正常に機能しており、問題はありません。これはボタンクリック時の私のコードですradio buttonbtnCheck.pngbtnUnCheck.png

   -(IBAction)btnNextClick:(id)sender {
      UIImage* selectedImg=[UIImage imageNamed:@"btnCheck.png"];
      if ((btnILink.imageView.image == selectedImg  || btnTapeIn.imageView.image == selectedImg || btnKeraLink.imageView.image == selectedImg))
      {
        if (btnTapeIn.imageView.image == selectedImg) {
            UIImage* selectedImg1=[UIImage imageNamed:@"btnCheck.png"];
            if (!(btn18.imageView.image == selectedImg1 || btn22.imageView.image == selectedImg1)){
                [FunctionManager showMessage:@"" withMessage:@"Please Select Length" withDelegage:nil];
                return;
            }
        }
        else {
            UIImage* selectedImg1=[UIImage imageNamed:@"btnCheck.png"];
            if (!(btn16.imageView.image == selectedImg1  || btn18.imageView.image == selectedImg1 || btn22.imageView.image == selectedImg1)){
                [FunctionManager showMessage:@"" withMessage:@"Please Select Length" withDelegage:nil];
                return;
            }
        }
      }
      else {
          [FunctionManager showMessage:@"" withMessage:@"Please Select Method" withDelegage:nil];
          return;
      }
    }

ここに画像の説明を入力

をクリックすると正常に動作しbtnNextます。アイテムが選択されていない場合は、メッセージが表示されます。しかし、問題は、両方のアイテムを選択してバックグラウンドに移動すると、アプリに戻って[次へ]をクリックすると、メッセージが表示されますが、チェックボックスは既に選択されています。その場合、なぜ条件が真でないのか...

ここに画像の説明を入力

4

6 に答える 6

3

UIImageはい、オブジェクトを比較したため、そうします

UIImage* selectedImg=[UIImage imageNamed:@"btnCheck.png"];
      if ((btnILink.imageView.image == selectedImg  || btnTapeIn.imageView.image == selectedImg || btnKeraLink.imageView.image == selectedImg))

バックグラウンドから来るたびに Create new UIImageobject を設定するので、同じにすることはできませんobject。したがって、オブジェクト(btnILink.imageView.image == selectedImg)を比較する代わりに値を取得すると、bool正常に機能します。

于 2013-06-21T05:12:23.273 に答える
0

で画像を通常状態に設定し、 で選択しXIBて状態を変更できます。IBAction

于 2013-06-21T11:14:52.743 に答える
0
https://github.com/Brayden/UICheckbox      

これを実装して、比較ロジックを減らすことができます。

于 2013-06-21T05:13:16.627 に答える
0

画像の代わりに Buttons selected プロパティを使用して、そのボタンをクリックして次のようなチェックを行います

if(btnTapeIn.selected)
{
      [btnTapeIn setImage:[UIImage imageNamed:@"btnUnCheck.png"] forState:UIControlStateNormal];
      btnTapIn.selected =  NO;
}
else
{
      [btnTapeIn setImage:[UIImage imageNamed:@"btnCheck.png"]forState:UIControlStateNormal];
      btnTapIn.selected = YES;
}
于 2013-06-21T05:10:38.737 に答える
0

ボタンのセットイメージで比較してはいけません。selectedたとえば、ボタンの組み込みプロパティを使用します。

btnTapeIn.selected = YES;
...
if(btnTapeIn.isSelected)
...
于 2013-06-21T05:16:04.593 に答える
0
 - (IBAction)btn_GenderCheck:(id)sender {
switch ([sender tag])
{
    case 1:   //-------for Male
        [btn_malecheck setImage:[UIImage imageNamed:@"radio_select.png"] forState:UIControlStateNormal];
        [btn_femalecheck setImage:[UIImage imageNamed:@"radio.png"] forState:UIControlStateNormal];
        isMaletag=1;

        break;
    case 2: //----------for Female
        [btn_malecheck setImage:[UIImage imageNamed:@"radio.png"] forState:UIControlStateNormal];
        [btn_femalecheck setImage:[UIImage imageNamed:@"radio_select.png"] forState:UIControlStateNormal];
        isMaletag=2;
        break;
    default:
        break;
}

}

// then you can check tag and accordingly alert your message
于 2013-06-21T05:23:52.953 に答える