Compatibile con Xcode 8

Tutorial Alert View e Action Sheets con il linguaggio Swift

ENTRA NEL NOSTRO GRUPPO FACEBOOK

Prego, favorisca patente e libretto!

Hai presente quando cammini per strada e, di punto in bianco, spunta quella paletta che ti avvisa di fermarti? Se non ti è capitato non preoccuparti, prima o poi capita a tutti :D

Gli avvisi o alert sono un modo intelligente per poter comunicare in maniera immediata con l’utilizzatore.  Peppe, perché hai fatto riferimento ad un blocco stradale?

Il motivo risiede nel fatto che, come un fermo delle forze dell’ordine, un alert quando arriva non può essere chiuso a meno di determinate scelte (inserisco un dato, premo un bottone ecc). Per la programmazione con il linguaggio Swift per iOS, gli avvisi, si dividono in due tipologie:

  • Alert View: La finestra che, come suggerisce il nome, mostra un avviso all’utilizzatore. Un esempio  di Alert View è la finestra che compare quando l’Apple Store ti chiede di inserire la password.
  • Action Sheets: Simile all’Alert View ma è composta da una finestra che richiede all’utente di scegliere un’azione. Un esempio è la finestra che si apre quando, dall’applicazione Foto, fai la condivisione.

In questo Tutorial ti insegnerò ad utilizzare le Alert View e Action Sheets con il linguaggio Swift. Questa volta, a differenza degli altri tutorial, non realizzerai un vero e proprio progetto. Bensì ti farò vedere solamente come utilizzare le Alert View e Action Sheets con il linguaggio Swift 2.0. Nel particolare vedrai come:

  1. Creare un Alert View.
  2. Aggiungere una Action ad un Alert View.
  3. Aggiungere un Text Field all’Alert View.
  4. Creare una Action Sheets.

Alert View e Action Sheets con il linguaggio Swift

Pronto? Si comincia!

Per prima cosa apri Xcode e crea un nuovo progetto (File\New\Project…). Seleziona iOS, Single View Application e premi Next. Inserisci un nome al tuo progetto, assicurati che sia selezionato il linguaggio di programmazione Swift, fai Next e infine Create.

Gli Alert View sono delle particolari View istanziabili a partire da un oggetto della classe UIAlertController. L’AlertController è colui che gestirà e creerà gli Alert della tua applicazione. In poche parole, l’UIAlertController, alla stessa maniera di un UIViewController, gestisce sia la grafica che il comportamento.

La particolarità delle Alert View è che, una volta istanziate, affiorano in superficie posizionandosi davanti a tutte le view esistenti. Un alert, come ti ho già detto non mostra solo messaggi, infatti può contenere al suo interno diversi oggetti come TextField e Bottoni.

Un bottone che esegue un’azione e chiude l’AlertView, come il “Chiudi” dell’esempio, prende il nome di ActionQuando un Alert non fa altro che farti scegliere tra più opzioni, non si chiama pià AlertView bensì Action Sheets. Pensa ad un Action Sheets, come quelle per la condivisione di un’immagine, dove ogni Action rappresenta il modo in cui condividerla (iMessage, Facebook, Istagram ecc).

Apri il ViewController.Swift e sotto la definizione della classe aggiungi il seguente codice:

In questa maniera hai creato un riferimento ad un oggetto della classe UIAlertController. Il “controller” sarà il vero e proprio AlertView quindi quando parlerò di alert in realtà mi riferirò a questo “controller”. Nota la scelta del nome. Non l’ho chiamato AlertView volutamente in quanto, non è un normale UIAlertView che controlla solo la grafica, bensì è un oggetto UIAlertController che già al suo interno possiede la UIAlertView.

Adesso nel metodo ViewDidLoad aggiungi:

La creazione di un UIAlertController avviene per mezzo dell’invocazione del costruttore della classe. Di default richiede 3 parametri:

  1. Il titolo non è altro che una stringa che descrive il problema o l’azione da eseguire.
  2. Il messaggio, può essere opzionale, rappresenta la descrizione dell’AlertView.
  3. Lo stile di visualizzazione dell’AlertView.

Gli stili di visualizzazione possono essere 2:

  1. Alert: Quando la AlertView è frutto di un errore generato dall’applicazione o semplicemente di un avviso importante.
  2. ActionSheet: Quando vuoi presentare all’utente un set di alternative da utilizzare (diverse Action o bottoni).
    Quindi adesso puoi dedurre come un ActionSheet non è altro che una personalizzazione dell’AlertController.

Il passo successivo è quello dell’invocazione del controller e quindi della visualizzazione a schermo del messaggio.

Ti ricordo che il metodo viewDidLoad viene invocato prima dell’apparizione della View principale sullo schermo dell’app quindi il suo utilizzo principale è quello di caricare i dati prima di utilizzarli. Per mostrare l’AlertView, per il momento, ti servirai del metodo viewDidAppear che viene eseguito dopo che la view dell’applicazione è stata caricata. Ma puoi creare anche una funzione e poi richiamarla quando ti sarà più comodo a te.

Aggiungi il seguente codice subito dopo il metodo viewDidLoad:

Il metodo presentViewController non fa altro che instanziare una nuova ViewController all’interno del ViewController in cui viene invocato (in questo caso viene istanziato all’interno del ViewController che rappresenta l’unica view del tuo progetto).

Prova ad avviare l’applicazione:

alert view senza action

Una volta che l’alert view viene mostrata, è impossibile da chiudere. Perché mi fai questooo? Il problema risiede nel fatto che non è presente nessun tipo di Action che provvede alla chiusura della finestra.

Le Action sono delle azioni associate ai bottoni delle Alert View. Una Action rappresenta sia il bottone in se che ciò che esegue.

Nel metodo viewDidLoad, dopo la creazione dell’AlertView, aggiungi il seguente codice:

L’aggiunta di un bottone ad un Alert, o meglio di una Action, è composta da 2 passaggi:

  1. Creazione dell’Action tramite la UIAlertAction. Composta da:
    title: Il testo del bottone.
    style: Lo stile di rappresentazione del bottone, può essere Default, Destructive (di colore rosso) e Cancel.
    handler: è una closure e rappresenta ciò che il bottone deve eseguire.
  2. Associare l’action all’AlertView tramite il metodo addAction.

Build & Run, dovresti essere in grado di chiudere l’alert (in più nella console di Xcode dovresti vedere il messaggio associato all’azione):
Alert View linguaggio Swift

Il passo successivo è quello della personalizzazione dell’Alert.

Una delle personalizzazioni, più in voga ed utilizzate in alcune applicazioni, è quella di utilizzare le Alert View per richiedere l’inserimento di una password o di dati. Ovviamente per richiedere l’inserimento di un dato c’è bisogno di un contenitore dove far inserire il testo. E quale non miglior contenitore di un Text Field?

Il metodo per aggiungere un text field al controller è il addTextFieldWithConfigurationHandler. Nel codice inserito nel ViewDidLoad aggiungi:

Il metodo è una closure, crea una TextField da inserire nell’alert che puoi caratterizzare all’interno del metodo. Come caratterizzazione ho impostato un banale placeholder (il testo di sfondo).

Modifica, quindi sostituisci, la action creata in precedenza con la seguente:

Dato che il controller (l’alertView) può contenere più textField, di default, i riferimenti a ciascun Field vengono inseriti in un array di AnyObject.

Per questo motivo, l’action, prima recupera il riferimento alla textField in posizione X (la posizione 0 dato che ce n’è una sola – ti ricordo che per gli array il conteggio delle posizioni parte da 0), poi fa il casting in UITextField (as UITextField) e successivamente stampa in console il contenuto presente nella textField.

Provare per credere!

Infine questo questo è il codice completo che dovresti avere nel tuo file:

condividi xCoding

Sarei davvero felice se contribuissi al mio progetto semplicemente mettendo un mi piace o follow alle mie pagine

[addtoany]

Grazie davvero :-)

Adesso passiamo all’utilizzo delle Action Sheets con il linguaggio Swift.

Se sei stato attento dovresti aver capito che una Action Sheets non è altro che una personalizzazione dell’Alert View. Nella sostanza cambia lo stile di visualizzazione, mentre nella pratica l’utilizzo è completamente differente rispetto ad un avviso.

Utilizza un Action Sheets, solo e solamente, per mostrare una rosa di scelte all’utilizzatore.

Una delle particolarità della Action Sheets è quella di poter mostrare un bottone di tipo Destructive. Il suo compito è quello di terminare l’esecuzione dell’ActionSheet e perdere tutti i dati che sono stati generati durante l’istanza di utilizzo dell’Action Sheet. Il destructive button è utilizzabile anche per le AlertView. Il motivo per cui te ne parlo ora è che nelle Alert View un bottone di questo tipo non avrebbe molto senso d’esistere, quindi ti consiglio di non usarlo.

Sostituisci tutto il codice del ViewDidLoad con il seguente:

Avvia l’applicazione:

Action Sheet swift e ios8

Considerazioni

Se vuoi investigare di più sulle Alert View e Action Sheets con il linguaggio Swift, oppure sei interessato ad ampliare le tue conoscenze in materia di sviluppo applicazioni, segui il nostro corso.

Quando devo utilizzare uno dei due?

  1. Action Sheet: Quando vuoi mostrare all’utente una serie di opzioni o azioni. Da non utilizzare per inviare allerte! nota anche la disposizione dell’Action Sheet, è marginale e non da l’impressione di un vero e proprio messaggio di allerta.
  2. Alert View: Quando vuoi avvisare l’utente di un problema (inserimento di un dato non consono, errore nei caricamenti ecc) oppure vuoi far inserire dati per riempire le collection della tua applicazione (array, db, dizionari ecc).

Buona Programmazione!

Start typing and press Enter to search

Tutorial Table View OSX in SwiftTutorial NSTimer in Swift, creare applicazione cronometro