2011-07-14 28 views
0

我有這樣的代碼來控制兩個複選框(自定義按鈕):iOS設備上:控制兩個複選框

- (IBAction) setCheckBox: (id) sender{ 

    UIImage *selected = [UIImage imageNamed:@"checkbox_checked.png"]; 
    UIImage *notSelected = [UIImage imageNamed:@"checkbox_unchecked.png"]; 

    if ([sender isSelected]) 
    { 
     [sender setImage:notSelected forState:UIControlStateNormal]; 
     [sender setSelected:NO]; 
     if ([sender tag] == 10) boolOne = FALSE; 
     if ([sender tag] == 11) boolTwo = FALSE; 
    } 
    else 
    {  
     [sender setImage:selected forState:UIControlStateSelected]; 
     [sender setSelected:YES]; 
     if ([sender tag] == 10) boolOne = TRUE; 
     if ([sender tag] == 11) boolTwo = TRUE; 
    } 
} 

你可以看到,這個代碼控制兩個複選框,當我按下一個它成爲檢查,當我按下另一次它變得沒有檢查。

現在我想以這種方式更改此代碼: 與標籤10默認複選框被選中,當我按下它,我也沒有效果,但是當我按與標籤11複選框應檢查和複選框10應該沒有檢查。 複選框應該選擇的切換,也是布爾值

+0

您的主要問題是什麼?你在哪裏堅持? –

+0

我想複選框,當我按一個它成爲檢查其他複選框變得沒有選中,只有這... – CrazyDev

+0

看到我的答案哥們 –

回答

1
if([sender isSelected]) 
return; 
if([sender tag] == 11){ 
    [sender setSelected:YES]; 
[checkbox10 setSelected:NO]; 
} 
if ([sender tag] == 10) { 
[sender setSelected:YES]; 
[checkbox11 setSelected:NO]; 
} 

您可以通過標記值獲取複選框像我假定複選框是如此的UIButton

UIButton *checkBox10 = (UIButton*)[self.view viewWithTag:10]; 

我希望你明白的實例。還要根據代碼設置圖像。

+0

我會嘗試你的代碼 – CrazyDev

0

如果你想要單選按鈕的行爲,你應該使用單選按鈕而不是複選框。

假設您存儲的複選框,名爲checkbox10checkbox11實例變量,這應該解決您的問題:

- (IBAction) setCheckBox: (id) sender{ 

    UIImage *selected = [UIImage imageNamed:@"checkbox_checked.png"]; 
    UIImage *notSelected = [UIImage imageNamed:@"checkbox_unchecked.png"]; 

    if (![sender isSelected]) 
    { 
     [sender setImage:notSelected forState:UIControlStateNormal]; 
     [sender setSelected:YES]; 
     if ([sender tag] == 10) 
     { 
      boolOne = YES; 
      boolTwo = NO; 
      [checkbox11 setImage:notSelected forState:UIControlStateNormal]; 
      [checkbox11 setSelected:NO]; 
     } 
     if ([sender tag] == 11) 
     { 
      boolTwo = YES; 
      boolOne = NO; 
      [checkbox10 setImage:notSelected forState:UIControlStateNormal]; 
      [checkbox10 setSelected:NO]; 
     } 
    } 
}