2013-06-21 36 views
-1

我與radio button有奇怪的問題。我使用UIButtonradio button,並使用兩個圖像btnCheck.pngbtnUnCheck.png在正常情況下它的正常工作沒有問題。這是我對按鈕的代碼單擊RadioButton無法正常工作

-(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; 
     } 
    } 

enter image description here

其工作正常,當我點擊btnNext,如果沒有任何一個項目被選中,那麼它顯示的消息。但問題是當我選擇這兩個項目,並在後臺,然後我回來的應用程序,然後單擊下一步然後顯示消息,但複選框已被選中。爲什麼條件是不是在這種情況下,真正的...

enter image description here

+0

狀態.. 。? –

+0

更多代碼請在您設置各種按鈕的imageView圖像的位置。 – Bourne

回答

1

使用的按鈕選擇屬性,而不是像當點擊該按鈕用於檢查 像

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; 
} 
+0

感謝它的工作.. –

3

是的,它會這麼做,因爲你比較UIImage物體像:

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

每次當它從背景中它設置Cre吃了新的UIImage對象所以它不可能是相同的object。 因此,而不是比較對象(btnILink.imageView.image == selectedImg)採取bool值它會正常工作。

+1

+1感謝您的重播 –

0
https://github.com/Brayden/UICheckbox  

你可以實現這個並減少比較邏輯。

0

你不應該按鈕的設置圖像進行比較。例如,使用內置selected屬性的按鈕。

btnTapeIn.selected = YES; 
... 
if(btnTapeIn.isSelected) 
... 
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 
0

您可以在正常狀態下設定圖像和XIB選擇你所使用的無線電或複選按鈕的功能改變IBAction