iPhone uibutton con funcionalidad de uiswitch
Pregunta
¿Hay alguna manera de implementar UISWitch con gráficos personalizados para los estados de conmutación? ¿O como alternativa al revés, un Uibutton con funcionalidad de uiswitch?
Solución
UIButton
ya admite una funcionalidad de "conmutador".
Simplemente establezca una imagen diferente en Interface Builder para la "configuración de estado seleccionada" y use el selected
propiedad de UIButton
para alternar su estado.
Otros consejos
Establezca la imagen para mostrar en el estado seleccionado:
[button setImage:[UIImage imageNamed:@"btn_graphics"] forState:UIControlStateSelected];
Y luego en el retoque dentro del selector, establezca:
button.selected = YES;
Si desea que esto cancele la selección de otro botón, establezca:
otherButton.selected = NO;
Para desarrollar lo que PGB y Nurne dijeron anteriormente, después de establecer sus estados y adjuntar un selector (método de evento), desea poner este código en ese selector.
- (IBAction)cost:(id)sender
{
//Toggle current state and save
self.buttonTest.selected = !self.buttonTest.selected;
/**
The rest of your method goes here.
*/
}
Para inclinar programáticamente:
-(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];
}