• Save
Corso Tecnologie Mobile - Lezione laboratorio 4
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Corso Tecnologie Mobile - Lezione laboratorio 4

  • 729 views
Uploaded on

Slide della quarta ed ultima attività di laboratorio del corso ENAIP in Tecnologie di Rete Mobile. Realizziamo insieme la app del corso, per imparare ad utilizzare le tabelle, i controller di......

Slide della quarta ed ultima attività di laboratorio del corso ENAIP in Tecnologie di Rete Mobile. Realizziamo insieme la app del corso, per imparare ad utilizzare le tabelle, i controller di navigazione e tabulazione e l'invocazione di altre applicazioni presenti all'interno del dispositivo.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
729
On Slideshare
681
From Embeds
48
Number of Embeds
3

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 48

http://caspaolo.blogspot.com 31
http://caspaolo.blogspot.it 15
http://www.mybestcv.co.il 2

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. + Tecnologie Mobili - Lezione Laboratorio 4
  • 2. + 2 Requisiti  Inquesta ultima lezione del corso cercheremo di implementare una app meno interattiva rispetto alle precedenti, finalizzata alla comprensione di:   Utilizzo delle liste   Utilizzo della navigazione gerarchica   Utilizzo del UITabbarController   Interazione con altre applicazioni presenti all’interno del dispositivo (e.g.: invio mail, browser, apertura file PDF). Dr. Paolo Casoto, Ph.D - 2011
  • 3. + 3 Passo 1 - Creazione del progetto   Creiamo un progetto come abbiamo già fatto la scorsa settimana, per iPhone, senza abilitare alcuna opzione Dr. Paolo Casoto, Ph.D - 2011
  • 4. + 4 Le table view   Una tabella, nella terminologia iOS, è un elenco monodimensionale di elementi, disposti dall’alto verso l’alto ed eventualmente ripartiti in sezioni.   In generale sarebbe più intuitivo pensare alle tabelle di iOS come a liste di elementi.   Le tabelle possono essere rappresentate mediante due stili differenti: normali o raggruppate.   Per maggiori dettaglio vi rimando alle slide della lezione 3 dove sono descritti i differenti stili nel dettaglio.   E’ utilizzata per la navigazione gerarchica dei contenuti. Dr. Paolo Casoto, Ph.D - 2011
  • 5. + 5 Le table view e le sorgenti dati   Una tabella, nel paradigma di iOS, è costituita da un insieme di 3 elementi:   Un oggetto UITableView, dedicato alla visualizzazione;   Un oggetto che implementa il protocollo UITableViewDataSource: gestisce i dati che devono essere visualizzati all’interno della tabella, il numero di righe e di sezioni, i titoli delle stesse ed il contenuto delle celle associate alle singole righe.   Un oggetto che implementa il protocollo UITableViewDelegate: gestisce l’interazione dell’utente con la tabella, l’operazione di selezione di una o più righe e di modifica.   Il controller UITableViewController semplifica l’attività del programmatore implementando già entrambi i protocolli descritti ed includendo una istanza di UITableView. Dr. Paolo Casoto, Ph.D - 2011
  • 6. + 6 Come implementare quindi una tabella ?   Estendiamo nel nostro controller la classe UITableViewController, effettuando la sovrascrittura dei soli metodi del protocolli che sono necessari al controller stesso   E.g.: non è detto che la nostra tabella sia necessariamente una tabella editabile.   Definiamo quale stile debba essere assunto dalle celle utilizzate per la visualizzazione, selezionando fra i 4 stili standard predefiniti o definendo ex novo le nostre celle, mediante la definizione di un ulteriore oggetto che estende UITableViewCell.   Per ottimizzare le prestazioni le celle sono mantenute in una cache della tabelle e popolate solo con i valori effettivamente visibili della tabella Dr. Paolo Casoto, Ph.D - 2011
  • 7. + 7 Passo 2 – costruiamo la nostra tabella   Nel nostro caso la soluzione proposta è alquanto semplice e si basa, quale sorgente dei dati, su un array contenente due oggetti di tipo “Docente”   Trovate gli oggetti nei file allegati all’esercizio, all’interno della cartella model   All’interno del metodo viewDidLoad inizializziamo l’array dei contenuti della tabella.   Per ciascuna cella della tabella (nel nostro caso 2) visualizzeremo una cella con stile UITableViewCellStyleDefault, per visualizzare i nomi dei singoli docenti del corso. Dr. Paolo Casoto, Ph.D - 2011
  • 8. + 8 Passo 2 – costruiamo la nostra tabella   Creiamo un nuovo file, chiamato DocentiViewController, dal wizard di creazione, selezionando come classe padre del controller la classe UITableViewController. Aggiungiamo l’array data per la gestione dei contenuti Dr. Paolo Casoto, Ph.D - 2011
  • 9. + 9 Inizializziamo l’array con due elementi di tipo Docente In generale i dati potrebbero arrivare da un DB, dalla rete, da Dr. Paolo Casoto, Ph.D - 2011 un file, et al.
  • 10. + 10 I metodi del protocollo UITableViewDataSource Numero di sezioni Numero di righe (e.g. [data count]) Genera il contenuto della cella alla riga specifica dal parametro [indexPath row] Dr. Paolo Casoto, Ph.D - 2011
  • 11. + 11 I metodi del protocollo UITableViewDelegateAlla selezione di un docente aggiunge unnuovo controller alla pila dei controllerdisponibili Definiremo poi il controller di dettaglio, per ora pensiamolo come un controller vuoto. Dr. Paolo Casoto, Ph.D - 2011
  • 12. + 12 A questo punto eseguiamo…   No, purtroppo manca ancora un elemento abbastanza complesso da spiegare.   Abbiamo detto che uno dei principali utilizzi delle tabelle è la navigazione gerarchica fra schermate successive.   Seleziono un elemento della lista per visualizzarne il dettaglio e, nel caso di una ulteriore lista, posso procedere ricorsivamente.   Per gestire tale gerarchia di dati esiste un opportuno controller, il controller UINavigationController, che gestisce, utilizzando uno stack, la navigazione gerarchica fra i controller che costituiscono l’applicazione   Il programmatore può modificare il controller visualizzato mediante operazioni push e pop sulla pila del controller di navigazione. Dr. Paolo Casoto, Ph.D - 2011
  • 13. + 13 UINavigationController e tabelle Dr. Paolo Casoto, Ph.D - 2011
  • 14. + 14 La barra di navigazione   La barra di navigazione può ospitare due pulsanti, rispettivamente ai lati destro e sinistro. Tutti i pulsanti collocati all’interno della barra di navigazione assumono lo stile sbordato (BorderedStyle).   La barra di navigazione può adattare le proprie dimensioni al variare dell’orientamento del dispositivo.   La barra di navigazione può essere modificata in colore e stile ed è possibile utilizzare una immagine in sostituzione della etichetta del titolo   Logo dell’azienda Dr. Paolo Casoto, Ph.D - 2011
  • 15. + 15 La barra di navigazione   La barra di navigazione deve utilizzare propriamente l’etichetta del titolo. A ciascuna nuova schermata collocata all’interno dell’UINavigationController il titolo deve essere opportunamente aggiornato.   In caso di più schermate all’interno della pila dell’UINavigationController la barra di navigazione deve riportare il tasto per la navigazione all’indietro, con riferimento al titolo della schermata precedente o, in alternativa, il tasto “back”. Dr. Paolo Casoto, Ph.D - 2011
  • 16. + 16 UINavigationController: push e pop   Ma dove e come fare push e pop dei controller sullo schermo ?   Il pop lo fa il sistema in automatico ogni volta che l’utente seleziona il pulsante “Back” sulla barra di navigazione associata al UINavigationController.   Il push di un controller sullo stack lo abbiamo già visto quando l’utente seleziona una cella della tabella, nel metodo:   L’animazione di entrata ed uscita dei controller è gestita da iOS. Dr. Paolo Casoto, Ph.D - 2011
  • 17. + 17 Ok, ma ora eseguiamo ?   No, facciamo ancora un altro passo, sempre più difficile    La navigazione gerarchica consente di navigare fra un insieme di controller con dettaglio e specializzazione sempre maggiore.   Ma come fare per ottenere, invece, una organizzazione in aree funzionali dei controller che compongono la mia applicazione   E.g.: i controller legati ai docenti sono solo parzialmente legati ai controller per la visualizzazione delle lezioni del corso.   Una soluzione è quella di adottare la cosiddetta modalità di interazione basata su tab ed il relativo controller, il UITabbarController. Dr. Paolo Casoto, Ph.D - 2011
  • 18. + 18 La barra di tabulazione (TabBar)   Consente di fornire all’utente l’abilità di variare la tipologia, la modalità o il compito visualizzate dalla schermata attuale.   La barra di tabulazione è collocata sempre nell’area inferiore dello schermo e di colore nero.   Le icone ed i testi che appaiono all’interno della barra di tabulazione sono automaticamente ridimensionate al fine di assumere le medesime dimensioni.   Quando una icona è selezionata, essa appare automaticamente illuminata su sfondo più chiaro rispetto alla barra. Dr. Paolo Casoto, Ph.D - 2011
  • 19. + 19 La barra di tabulazione (TabBar) Dr. Paolo Casoto, Ph.D - 2011
  • 20. + 20 Passo 3 – Definiamo il file Main.xib   Creiamo un nuovo file xib dal wizard di creazione e selezioniamo, come tipologia, uno xib per applicazione.   All’interno dello xib collochiamo un controller di tipo UITabbarController   All’interno del controller appena collocato, trasciniamo un UINavigationController   Non vi spaventate, adesso ci proviamo insieme…ed ora finalmente proviamo il nostro codice… Dr. Paolo Casoto, Ph.D - 2011
  • 21. + 21 Ma che fine ha fatto la barra di navigazione ? Andate a guardare con cura come abbiamo definito il metodo viewWillAppear Ma nell’altra area funzionale cosa ci mettiamo ? Dr. Paolo Casoto, Ph.D - 2011
  • 22. + 22 Qui forziamo la visualizzazione della barra di navigazione Impostiamo il titolo del controller, da visualizzarsi all’interno della barra di navigazione Implementiamo i metodi associati ai due pulsanti Dr. Paolo Casoto, Ph.D - 2011
  • 23. + 23 Invocazione di funzionalità offerte da altre applicazioni   Invio di email: iOS mette a disposizione, dalla versione 3.0, un opportuno controller per l’invio di messaggi mail ed SMS   Il controller utilizza gli account definiti dall’utente nelle impostazioni del dispositivo Dr. Paolo Casoto, Ph.D - 2011
  • 24. + 24 Invocazione di funzionalità offerte da altre applicazioni   Apertura di un indirizzo all’interno del browser Safari mobile Mediante il metodo [[UIApplication sharedApplication] openURL: indirizzo] è possibile utilizzare le applicazioni esistenti all’interno del dispositivo mediante uno specifico schema di indirizzi URL   Apple Mail, YouTube, Maps, iTunes, Apple Store, iBooks et al.   Meccanismo molto simile agli Intenti di Android   Per ciascuna applicazione è possibile definire uno specifico schema per l’avvio della stessa mediante l’invocazione di un URL. Dr. Paolo Casoto, Ph.D - 2011
  • 25. + 25 Dr. Paolo Casoto, Ph.D - 2011
  • 26. + 26 Dr. Paolo Casoto, Ph.D - 2011
  • 27. + 27 Completiamo la sezione Lezioni   Realizziamo un nuovo UITableViewController, chiamato LezioniViewController, per la gestione della lista delle lezioni.   Come oggetto di dominio, in questo specifico controller, utilizzeremo un oggetto di tipo Lezione che trovate nella cartella model del progetto.   Alla selezione di una cella vogliamo aprire in visualizzazione il PDF relativo alla lezione. Come fare ?   Lo deleghiamo, anche in questo caso, a SAFARI Dr. Paolo Casoto, Ph.D - 2011
  • 28. + 28 Dr. Paolo Casoto, Ph.D - 2011
  • 29. + 29 Dr. Paolo Casoto, Ph.D - 2011
  • 30. + Domande ??? Grazie a tutti per l’attenzione Dr. Paolo Casoto, Ph.D - 2011