iPhone UIButton с функциональностью UISwitch - PullRequest
60 голосов
/ 13 февраля 2010

Есть ли способ реализовать UISwitch с пользовательской графикой для состояний переключения? Или как альтернатива, UIButton с функциональностью UISwitch?

Ответы [ 4 ]

101 голосов
/ 13 февраля 2010

UIButton уже поддерживает функцию «переключения».

Просто установите другое изображение в Интерфейсном Разработчике для «Конфигурации выбранного состояния» и используйте свойство selected UIButton для переключения его состояния.

12 голосов
/ 05 апреля 2012

установить изображение для отображения в выбранном состоянии:

[button setImage:[UIImage imageNamed:@"btn_graphics"] forState:UIControlStateSelected];

и затем при касании внутри селектора установите:

button.selected = YES;

, если вы хотите отменить выбор другой кнопки, установите:

otherButton.selected = NO;
8 голосов
/ 15 апреля 2013

Чтобы опираться на сказанное выше PGB и nurne, после того, как вы установите свои состояния и добавите селектор (метод события), вы захотите поместить этот код в этот селектор.

- (IBAction)cost:(id)sender 
{
    //Toggle current state and save
    self.buttonTest.selected = !self.buttonTest.selected;

    /**
     The rest of your method goes here.
     */
}
3 голосов
/ 10 февраля 2014

Для программно наклоненного:

-(void) addToggleButton {
    CGRect aframe = CGRectMake(0,0,100,100);

    UIImage *selectedImage = [UIImage imageNamed:@"selected"];
    UIImage *unselectedImage = [UIImage imageNamed:@"unselected"];

    self.toggleUIButton = [[UIButton alloc] initWithFrame:aframe];
    [self.toggleUIButton setImage:unselectedImage forState:UIControlStateNormal];
    [self.toggleUIButton setImage:selectedImage forState:UIControlStateSelected];
    [self.toggleUIButton addTarget:self 
                            action:@selector(clickToggle:) 
                  forControlEvents:UIControlEventTouchUpInside];
    [self addSubview:self.toggleUIButton];
}

-(void) clickToggle:(id) sender {
    BOOL isSelected = [(UIButton *)sender isSelected];
    [(UIButton *) sender setSelected:!isSelected];
}
...