La classe UIAletrView permette di mostrare una finestra modale (animata) per informare e/o chiedere qualcosa all’utente. Le UIAlterView (viste alert) sono molto comode e semplici da usare. Anche la gestione della risposta utente viene risolta intercettando l’indice del bottone premuto. Per visualizzare un semplice UIAlterView basta scrivere:
1 2 3 4 | // semplice Alert con un bottone, senza callback UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"Titolo" message:@"Messaggio" cancelButtonTitle:@"Annulla" otherButtonTitles: nil]; [myAlert show]; [myAlert release]; |
E’ possibile aggiungere ulteriori bottoni in otherButtonTitles:
1 2 3 4 | // semplice Alert con due bottoni, senza callback UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"Titolo" message:@"Messaggio" cancelButtonTitle:@"Annulla" otherButtonTitles:@"Ok", nil]; [myAlert show]; [myAlert release]; |
Per determinare quale bottone è stato premuto, basta aggiungere la delegate:self nell’inizializzazione dell’oggetto UIAlterView:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // semplice Alert con due bottoni e callback UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"Titolo" message:@"Messaggio" delegate:self cancelButtonTitle:@"Annulla" otherButtonTitles:@"Ok", nil]; [myAlert show]; [myAlert release]; // la callback ha questa sintassi - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { switch ( buttonIndex ) { case 1: // codice break; } } |
La callback alertView deve avere necessariamente quel nome; per maggiori informazioni vedi UIAlertViewDelegate
Avendo a disposizione solo la callbck alertView:clickedButtonAtIndex, più UIAletrView punteranno sempre a quella. Utilizzando il campo tag dell’oggetto UIAletrView, possiamo determinare quale sia il “chiamante”:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // semplice Alert con due bottoni e callback UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"Titolo" message:@"Messaggio" delegate:self cancelButtonTitle:@"Annulla" otherButtonTitles:@"Ok", nil]; myAlertA.tag = 1; [myAlertA show]; [myAlertA release]; // UIAlertView *myAlertB = [[UIAlertView alloc] initWithTitle:@"Titolo" message:@"Messaggio" delegate:self cancelButtonTitle:@"Annulla" otherButtonTitles:@"Ok", nil]; myAlertA.tag = 2; [myAlertB show]; [myAlertB release]; // gestione multipla UIAlertView - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { NSLog(@"Alert Tag: %i", alertView.tag); NSLog(@"buttonIndex: %i", buttonIndex); } |









4
Ciao ho una domanda..
io ho copiato la tua riga di codice( quella dell’ultima finestra)
ma mi da quest’errore:
Whi?
@Corninos: nel file .h della tua classe (non so dove hai inserito il codice) devi inserire il prototipo della funzione, ovvero:
Inoltre, attento, che potresti aver commesso un qualche errore di battitura. Se necessario incollami l’intero tuo codice o inviamelo per email.
Ciao ti ringrazio per avermi risposto e alla fine avevo all’interno un errore di battitura o copiatura.
All’interno della seconda
alertViewhai scritto:e non funzionava allora l’ho corretto in:
e tutto sembra funzionare..
Ora io ti faccio un’altra domanda “stupida”: ma se io volessi cambiare il colore dello sfondo di un pulsante o etichetta.. o anche solo il titolo di un pulsante come devo fare? io ho provato:
ma non funziona, poi ho provato
ti ringrazio anticipatamente!
@Corninos: in realtà mezza colpa è mia: mi sono accorto che avevo scritto
ho corretto il codice nel post). Per i titoli e lo stile dei bottoni, se ti riferisci all’
Alterinvece diAlert(dislessiaUIAlertView, puoi modificare la label durante la creazione dell’UIAlertView, agendo sucancelButtonTitleeotherButtonTitlesma non puoi alterare lo stile, essendo elementi di sistema.A meno che non ti riferisci ad un bottone semplice
UIButton… se ho capito bene la domanda?!@Giovambattista Fazioli:
io mi riferifo ad un bottone generico..
UIButtonè un OFF-TOPIC..@Corninos: se ti riferisci ad un bottone
UIButtonla label si cambia così:Lo sfondo, invece, puoi modificarlo in questo modo, anche se dipende da che tipo di bottone stai usando: