2012-02-22 11 views
9

C'è qualche controllo della casella di controllo nella libreria oggetti per le applicazioni iOS? La cosa più vicina che vedo è il controllo dell'interruttore, che può assumere un valore booleano.Controllo casella di controllo per applicazione iOS

+0

UISegmentedControl può aiutare a – 0xDE4E15B

+1

Usa UIButton Uniti per i marchi di controllo deselezionare /. Metti le immagini di deselezionare (stato normale) e controlla (stato selezionato). – Hirak

+0

No, non esiste un controllo UI predefinito per la casella di controllo o il pulsante di opzione, in questo caso è necessario utilizzare 2 immagini diverse per controllare e deselezionare e controllarle logicamente. – kulss

risposta

36

È possibile utilizzare lo stato selezionato di un UIButton, impostare le immagini differenti (o anche testi) per differenti (tramite codice o Interface Builder):

[button setImage:[UIImage imageNamed:@"selected.png"] 
     forState:UIControlStateSelected]; 
[button setImage:[UIImage imageNamed:@"unselected.png"] 
     forState:UIControlStateNormal]; 

E nel tocco l'azione interna:

- (IBAction)buttonTouched:(id)sender 
{ 
    button.selected = !button.selected; 
    // add other logic 
} 
+0

Molto utile per me. Grazie ... – Vaquita

+0

Questa è una libreria open source che ne fornisce l'implementazione. https://github.com/t4ku/RadioButtonWithUIKit –

+0

Non funziona. Devi prendere UIImageView. –

1

Questo è il codice che uso per due caselle di controllo sullo schermo. (Li ho messi nella parte inferiore di due immagini che sono anche sullo schermo.Usisco UIControlEventTouchDown per chiamare il metodo checkBoxTapped.Questo metodo parla con il mio controller di visualizzazione principale dove decido se la risposta è stata corretta o errata. Controller richiama l'questo punto di vista e gli dice di cambiare la casella di testo vuota, o un assegno:

enter image description here

o un x

enter image description here

// Put the Checkboxes on the screen 
UIImage *checkBox = [UIImage imageNamed:@"Checkbox"]; 

self.checkBoxLeft = [UIButton buttonWithType:UIButtonTypeCustom]; 
[self.checkBoxLeft setImage:checkBox forState:UIControlStateNormal]; 
[self.checkBoxLeft setFrame:checkBoxFrameLeft]; 
[self.checkBoxLeft addTarget:self 
         action:@selector(checkBoxTapped:) 
      forControlEvents:UIControlEventTouchDown]; 

[self.checkBoxLeft setTitle:@"checkBoxLeft" forState:UIControlStateNormal]; 
self.checkBoxLeft.contentEdgeInsets = insets; 
self.checkBoxLeft.showsTouchWhenHighlighted = NO; // Keeps it from turning gray 

self.checkBoxRight = [UIButton buttonWithType:UIButtonTypeCustom]; 
[self.checkBoxRight setImage:checkBox forState:UIControlStateNormal]; 
[self.checkBoxRight setFrame:checkBoxFrameRight]; 
[self.checkBoxRight addTarget:self 
         action:@selector(checkBoxTapped:) 
      forControlEvents:UIControlEventTouchDown]; 

[self.checkBoxRight setTitle:@"checkBoxRight" forState:UIControlStateNormal]; 
self.checkBoxRight.contentEdgeInsets = insets; 
self.checkBoxRight.showsTouchWhenHighlighted = NO; // Keeps it from turning gray 

- (void)checkBoxTapped:(UIButton *)buttonPressed { 
    [[self delegate] checkBoxTapped:buttonPressed.currentTitle]; 
} 

- (void)highlightCheckbox:(NSString *)checkboxToHighlight withHighlight:(NSString *)highlight { 

    if ([checkboxToHighlight isEqualToString:@"left"]){ 
     [self.checkBoxLeft setImage:[UIImage imageNamed:highlight] forState:UIControlStateNormal]; 
    } else { 
     [self.checkBoxRight setImage:[UIImage imageNamed:highlight] forState:UIControlStateNormal]; 
    } 
} 
0

// definire la proprietà di pulsante

Dichiarare Immagine incontrollato

- (void)viewDidLoad 
{ 
    [_checkboxButton setBackgroundImage:[UIImage imageNamed:@"unchecked.png"] forState:UIControlStateNormal]; 
} 

Immagine Controllato.

- (IBAction)buttonTapped:(id)sender 
{ 
    if (_checkboxButton.selected == YES) 
    { 
     [_checkboxButton setBackgroundImage:[UIImage imageNamed:@"unchecked.png"] forState:UIControlStateSelected]; 
     _checkboxButton.selected = NO; 
    } 
    else 
    { 
     [_checkboxButton setBackgroundImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal]; 
     _checkboxButton.selected = YES; 
    } 
}