2011-03-20 29 views

Respuesta

117

Sí, no hay casilla de verificación para que en IOS (-:

aquí, esto es lo que hice para crear una casilla de verificación:

UIButton *checkbox; 
BOOL checkBoxSelected; 
checkbox = [[UIButton alloc] initWithFrame:CGRectMake(x,y,20,20)]; 
// 20x20 is the size of the checkbox that you want 
// create 2 images sizes 20x20 , one empty square and 
// another of the same square with the checkmark in it 
// Create 2 UIImages with these new images, then: 

[checkbox setBackgroundImage:[UIImage imageNamed:@"notselectedcheckbox.png"] 
        forState:UIControlStateNormal]; 
[checkbox setBackgroundImage:[UIImage imageNamed:@"selectedcheckbox.png"] 
        forState:UIControlStateSelected]; 
[checkbox setBackgroundImage:[UIImage imageNamed:@"selectedcheckbox.png"] 
        forState:UIControlStateHighlighted]; 
checkbox.adjustsImageWhenHighlighted=YES; 
[checkbox addTarget:(nullable id) action:(nonnull SEL) forControlEvents:(UIControlEvents)]; 
[self.view addSubview:checkbox]; 

Ahora, en el método de destino, haga lo siguiente:

-(void)checkboxSelected:(id)sender 
{ 
    checkBoxSelected = !checkBoxSelected; /* Toggle */ 
    [checkbox setSelected:checkBoxSelected]; 
} 

Eso es todo

+3

Sólo un comentario muy, muy pequeño. No olvide el @ antes de las cadenas: @ "notselectedcheckbox.png". – polyclick

+8

y también si tienes múltiples botones puedes usar esto en tu método taget 'UIButton * btn = (UIButton *) remitente; \t si ([btn isSelected]) { \t \t [btn setSelected: NO]; \t} else { \t \t [btn setSelected: YES]; \t} ' – andsien

+1

¡No son necesarias las dos líneas donde se define el estado resaltado! simplemente fallan en la casilla de verificación (al menos en iOS5). :) –

28

En iOS existe el componente UI del conmutador en lugar de una casilla de verificación, consulte la clase UISwitch. La propiedad on (booleana) se puede utilizar para determinar el estado del control deslizante y sobre el guardado de su estado: eso depende de cómo guarde sus otras cosas, simplemente guardando un valor booleano.

+1

Prefiero el UISwitch también, ya que es nativo, optimizado y fácilmente personalizable. La primera respuesta también es genial, pero para mí (y eso es solo personal) no hay necesidad de reinventar las ruedas si no es necesario. El interruptor – Septronic

+0

no sirve de nada si queremos permitir a los usuarios seleccionar múltiples opciones. –

+1

@Hiren Prajapati: ¿Por qué? En caso de que necesite obtener múltiples opciones booleanas, usaría múltiples elementos UISwitch, tal como se hace en la aplicación de preferencia principal. El único culpable de usar un UISwitch en lugar de una marca de verificación es estéticamente/representativo para aquellos casos en los que la IU debe transmitir un estado de "Hecho/No Hecho" por algo. – valeCocoa

Cuestiones relacionadas