Apple iPhone: creare un custom toggle button

venerdì 4 dicembre, 2009

Gli stati UIControlStateSelected o UIControlStateHighlighted non funzionano quando un UIButton è impostato in modalità UIButtonTypeCustom! O meglio, non funzionano come dovrebbero (perchè riservati agli altri tipi di bottone), ad esempio per creare un bottone a due stati: toggle appunto. Se abbiamo creato due immagini (stato1.png e stato2.png) per il nostro bottone, possiamo procedere in questo modo:

Objective-C:
  1. // Nell'header file creiamo una variabile globale che usaremo per
  2. // controllare il toggle state
  3. BOOL toggleFlag;

Ora creiamo il nostro bottone:

Objective-C:
  1. // Creaiamo un bottone e lo poniamo inizialmente nello stato "stato1.png"
  2. // Modificate initWithFrame:(CGRect){100,100,50,50} con la posizione e
  3. // dimensioni della vostra immmagine
  4. toggleFlag = YES;
  5. UIButton *toggleButton = [[UIButton buttonWithType:UIButtonTypeCustom] initWithFrame:(CGRect){100,100,50,50}];
  6. [toggleButton setTitle:@"" forState:UIControlStateNormal];
  7. [toggleButton setBackgroundImage:[UIImage imageNamed:@"stato1.png"] forState:UIControlStateNormal];
  8. [toggleButton addTarget:self action:@selector(onToggle:) forControlEvents:UIControlEventTouchUpInside];
  9. [self.view addSubview:toggleButton];

Quando si clicca sul bottone verrà inviato un messaggio gestito da onToggle:

Objective-C:
  1. - (void)onToggle:(id)sender {
  2. // Recupero puntatore al UIButton
  3. UIButton *buttonClicked = (UIButton *)sender;
  4. // Eseguo il toogle
  5. toggleFlag = !toggleFlag;
  6. [buttonClicked setBackgroundImage:[UIImage imageNamed:(toggleFlag) ? @"stato1.png" : @"stato2.png"] forState:UIControlStateNormal];
  7. }

Post correlati

Questo articolo ti è stato utile?: Per nientePocoAbbastanzaMoltoMoltissimo
Loading ... Loading ...

Non ci sono commenti per questo Post

Lascia un commento

TAG XHTML PERMESSI: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERIMENTO CODICE:
<pre></pre>         // blocco generico
[code][/code]       // blocco generico
[as][/as]           // Actionscript
[css][/css]         // CSS Style Sheet
[html][/html]       // HTML
[js][/js]           // Javascript
[objc][/objc]       // Objective-C
[php][/php]         // PHP
[sql][/sql]         // SQL