iOS: управление двумя флажками - PullRequest
0 голосов
/ 14 июля 2011

У меня есть этот код для управления двумя флажками (кнопки настраиваются):

- (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 должен быть снят.Флажок должен переключать выбор, а также значение bool

Ответы [ 2 ]

1 голос
/ 14 июля 2011
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 голосов
/ 14 июля 2011

Если вам нужно поведение переключателей, вам, вероятно, следует использовать переключатели вместо флажков.

Предполагая, что вы сохраняете свои флажки как переменные экземпляра с именами checkbox10 и checkbox11, это должнорешить вашу проблему:

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