XCode Tips&Tricks #6 – Come inserire più bottoni in una UIAlertView

È da tanto tempo che non rispondevo sul blog ad una delle tante email che mi arrivano. Vista la mattinata libera ho pensato di rispondere qui a Marcello, che mi chiedeva come creare una UIAlertView con più di due bottoni.

In un precedente post vi avevo spiegato come creare una UIAlertView, oggi vi mostrerò come inserire più di due pulsanti.

È davvero molto semplice, infatti vi basta utilizzare questo codice:

UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"Attenzione!" message:@"In quanti hanno chiamato?!?!" delegate:self cancelButtonTitle:@"Annulla" otherButtonTitles:@"Bottone 1",@"Bottone 2",nil];
 [alert show];
 [alert release];

Come vedete in “otherButtonTitles” abbiamo inserito più valori, che saranno appunto i bottoni che verranno visualizzati. Ricordatevi, infine, di inserire sempre il valore “nil” alla file, altrimenti non funzionerà.

Eccovi il risultato finale:

Spero che questo semplice tip possa risultare utile a qualcuno, se avete delle domande scrivetemi pure utilizzando questo form, cercherò di rispondere a tutti!

Ingegnere informatico e sviluppatore freelance, mi occupo da anni di sviluppo per iOS (ma non solo). Dal 2008 scrivo su questo piccolo blog (con qualche lunga pausa), in cui parlo di programmazione e di qualsiasi altra cosa che mi diverta.

11 comments On XCode Tips&Tricks #6 – Come inserire più bottoni in una UIAlertView

  • Ma con le UIAlertView si fanno le notifiche push?

  • @Spinoricky: si, sono sempre loro.. o meglio, il messaggio delle notifiche è mostrato con delle UIAlertView, ma non sono la stessa cosa..

  • Una domanda tecnica : in che modo posso far visualizzare le immagini presenti su una pagina html off-line? Ho utilizzato il codice presente su diversi siti e anche sui libri, ma l’immagine non viene mai visualizzata. Ho incluso le mie immagini jpg nella cartella Resources.. ma nulla.
    Per ora l’unica soluzione che ho trovato è farla caricare direttamente dal web 😉

    NSString *file = [[NSBundle mainBundle] pathForResource:@”index” ofType:@”htm”];

    NSString *contentFile= [NSString stringWithContentsOfFile:file];

    NSURL *baseURL = [NSURL URLWithString:@”http://localhost/8888/index.htm”];

    [wevView loadHTMLString:contentFile baseURL:BaseURL];

    p.s. inoltre alla seconda linea mi da un warning : ‘stringWithContentOfFile’ is deprecated

    La pagina offline funziona lo stesso, ma senza le immagini.

  • @Sile: per il file in locale, usa questa guida: https://www.bubidevs.net/2009/01/08/devtutorial-8-uiwebview-create-un-vostro-mini-browser/
    per le immagini all’interno del file html devi proprio importarle nn collegarle, altrimenti nn funzia

  • @Sile: ciao, il codice che hai postato non ha molto senso xD

    se devi caricare una semplice immagine jpg perchè non utilizzi una UIImageView? Se invece insieme ci devi inserire del testo devi prima crearti un file html, che poi carichi con la guida che ti ha indicato Fast..

    se hai altri dubbi chiedi pure..

  • Grazie per i vostri commenti sempre utilissimi !

    p.s. ora sembra che funzioni, ma in che modo posso inserire un URL (sempre off-line) che ha un ‘segnalibro’ (per es. index.htm#capitolo-primo ). ??? La sintassi htlm infatti fa si che si debba aggiungere un cacelletto alla fine dell’url.. ma in xcode?
    Perche utilizzando la sintassi indicata mi da errore se provo ad aggiungere il cancelletto “#” nel nome, e non lo posso neppure aggiungere nel Type “htm”….

    p.s. Sembra che ho risolto i problemi per la pubblicazione… il caos è dovuto al fatto che quando faccio BUILD ,devo assicurarmi OGNI VOLTA che il file dell’applicazione venga davvero sovrascritto BENE, perche stranamente cliccando su BUILD non viene sempre aggiornato. ..Allora devo “cancellare” il file app in debug, release e distribution ripetendo la cosa più volte finche la data ultima del file mi fa capire che è stato aggiornato, altrimenti nonostante io clicco su BUILD rimane quello vecchio e impazzisco per capire dove sta il problema..
    Beh… quì Apple poteva trovare una soluzione migliore 😉

  • @Sile: per quanto riguarda i segnalibri delle pagine html non so dirti, appena riesci provo a guardarci 😉

    per la compilazione, io faccio sempre “Build and Clean”, in modo che mi elimini tutti i file che aveva creato in precedenza e ricompili tutto da capo, onde evitar errori strani 😉

  • Se sono presenti solo un tasto e il tasto di CANCEL (per esempio se costruisci gli otherButton dinamicamente) lui mette i tasti uno accanto all’altro….come si può fare per farli impilare SEMPRE, anche se sono solo due?

  • ciao andrea, mi complimento ancora per le tue guide tips e tutorial sempre ottimi.
    approfitto per farti una breve domanda, se volessi assegnare una funzione ad uno dei bottoni dell’alertview tipo fargli cambiare vista, come potrei fare?

  • @vinz: Devi implementare il delegate della alert, nello specifico c’è un metodo del protocollo UIAlertViewDelegate:

    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { }
    
    
    Così facendo quando l'utente preme su un bottone viene richiamato questo metodo, e poi eseguirai le azioni che vuoi a seconda del bottone premuto ;)

Leave a Reply to Francesco Cancel Reply

Your email address will not be published.

Site Footer