2012-02-22 21 views
9

iOS uygulamaları için nesne kitaplığında herhangi bir onay kutusu denetimi var mı? Gördüğüm en yakın şey, boole değeri alabilen anahtar kontrolüdür.iOS uygulaması için onay kutusu denetimi

+0

UISegmentedControl size yardımcı olabilecek – 0xDE4E15B

+1

Kullanım UIButton durumlarını kontrol/işaretini işaretleri için. İşaretini kaldırın (normal durum) ve kontrol edin (seçili durum). – Hirak

+0

Hayır onay kutusu veya radyo düğmesi için varsayılan UI Denetimi yok, burada kontrol ve işaretlenmemiş için 2 farklı görüntü kullanmanız ve bunları mantıksal olarak denetleyebilmeniz – kulss

cevap

36

Bir UIButton seçilmiş durumunu, set farklı görüntüler (ya da metinler) değişik bir için (kod aracılığıyla veya Interface Builder) kullanabilirsiniz:

:

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

Ve dokunuş kadar iç eylem içinde

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

Benim için çok yararlı. Teşekkürler ..... – Vaquita

+0

Bu, bunun için uygulama sağlayan bir açık kaynak kütüphanesidir. https://github.com/t4ku/RadioButtonWithUIKit –

+0

Çalışmıyor. UIImageView'i almalısın. –

1

Bu, ekranda iki onay kutusu için kullandığım koddur. (Ekrandaki iki resmin alt tarafına koydum. CheckBoxTapped yöntemini çağırmak için UIControlEventTouchDown'ı kullanıyorum.Bu yöntem, yanıtın doğru ya da yanlış olup olmadığına karar verdiğim ana görünüm denetleyicimle konuşuyor. kontrolör bu görüşü geri arar ve bir çek ya boş metin kutusu değiştirmek söyler:

enter image description here

veya 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

// İşaretsiz Resmi

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

İşaretli Görüntü beyan düğmesinin

özelliğini tanımlar.

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