iphone uibutton com funcionalidade Uiswitch
Pergunta
Existe uma maneira de implementar o Uiswitch com gráficos personalizados para os estados de switch? Ou como uma alternativa de outra maneira, um UIBUItton com funcionalidade Uiswitch?
Solução
UIButton
Já suporta uma funcionalidade "Switch".
Basta definir uma imagem diferente no construtor de interface para a "configuração do estado selecionada" e usar o selected
propriedade de UIButton
para alternar seu estado.
Outras dicas
Defina a imagem a ser exibida no estado selecionado:
[button setImage:[UIImage imageNamed:@"btn_graphics"] forState:UIControlStateSelected];
e depois retoque dentro do seletor, defina:
button.selected = YES;
Se você deseja que isso cancele a seleção de outro botão, defina:
otherButton.selected = NO;
Para desenvolver o que o PGB e o Nurne disseram acima, depois de definir seus estados e anexar um seletor (método de evento), você deseja colocar esse código nesse seletor.
- (IBAction)cost:(id)sender
{
//Toggle current state and save
self.buttonTest.selected = !self.buttonTest.selected;
/**
The rest of your method goes here.
*/
}
Para inclinado programaticamente:
-(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];
}