Контроль флажка для приложения iOS - PullRequest
11 голосов
/ 22 февраля 2012

Есть ли какой-нибудь флажок в библиотеке объектов для приложений iOS? Ближайшая вещь, которую я вижу, это управление переключателем, которое может принимать логическое значение.

Ответы [ 3 ]

39 голосов
/ 22 февраля 2012

Вы можете использовать выбранное состояние UIButton, устанавливать различные изображения (или также тексты) для различий (через код или Интерфейсный Разработчик):

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

А в действии подкраски:

- (IBAction)buttonTouched:(id)sender
{
    button.selected = !button.selected;
    // add other logic
}
1 голос
/ 24 декабря 2013

// определить свойство кнопки

Объявить непроверенное изображение

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

Проверенное изображение .

- (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;
    }
}
1 голос
/ 16 февраля 2013

Это код, который я использую для двух флажков на экране.(Я помещаю их внизу двух изображений, которые также находятся на экране. Я использую UIControlEventTouchDown для вызова метода checkBoxTapped. Этот метод обращается к моему главному контроллеру представления, где я решаю, был ли ответ правильным или неправильным. Затем основное представлениеКонтроллер вызывает этот просмотр и говорит ему заменить пустое текстовое поле на чек:

enter image description here

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