Compatibile con Xcode 8

Creare una Table View con ricerca in Swift

ENTRA NEL NOSTRO GRUPPO FACEBOOK

Mignolo: Yuk, Prof! Che cosa vuoi fare con questa applicazione?
Prof: Quello che provo a fare con tutte le applicazioni, tentare di conquistare il mondo!

Proprio così recita un vecchio proverbio di un famosissimo duo di programmatori (mignolo e Prof). Il loro sogno è sempre stato quello di rilasciare un’applicazione che riuscisse letteralmente a conquistare il cuore di tutti gli Apple’s users.

Tutti i sogni possono essere realizzati e come disse il profeta, perseverare è la chiave del successo.

Qualsiasi applicazione che vorrai realizzare, e dico qualsiasi, per ottenere un minimo di notorietà o comunque permetterti di sbarcare il lunario, deve essere realizzata seguendo alcuni standard e metodologie che ti permetteranno di trasformare il tuo sogno in realtà.

Lo dico spesso a chi legge e a chi segue i miei corsi di programmazione, non ti fare illudere da chi ti dice che per realizzare un’applicazione ti basta solamente leggere un tutorial (come questo) oppure seguire alcuni video su youtube.

Realizzare un’applicazione è un’arte e come arte necessita della giusta preparazione. Per questo la prima cosa che consiglio a chi mi segue è di iniziare con le basi della programmazione e solo dopo iniziare a realizzare la prima applicazione per iOS con Swift.

Funzionamento UITableView

Fatta questa breve, ma dovuta, introduzione (mi piace lasciare un mio personale punto di vista ad ogni tutorial) è arrivato il momento di passare all’atto pratico. Dopo averti introdotto i concetti basilari per la creazione di un progetto per la tua prima applicazione per iPhone è necessario iniziare ad analizzare uno degli strumenti più visti ed utilizzati in un’applicazione, la Table View.

In questo tutorial, ti illustrerò come creare una Table View con ricerca in swift.

Aspetta, cos’è che imparerò?

Traduco in termini più semplici. Quello che farai sarà creare una tabella (come quella dell’applicazione Rubrica o delle Impostazioni di iOS). Nel dettaglio ti guiderò nella realizzazione di un’applicazione per iOS con il linguaggio Swift che utilizzerai per il controllo e la memorizzazione di una lista della spesa.

Una tabella è un oggetto della classe UITableView che puoi immaginare come un foglio a righe. Il foglio si chiama tabella o UITableView. Le righe vengono chiamate, in inglese, Row ed in ognuna di queste righe viene aggiunta una UITableViewCell, cioè una cella, dove la tabella inserirà il contenuto da visualizzare. 

Nella pratica, definito un array di elementi, la tabella:

  • Conterà quanti sono gli elementi presenti nella lista (array.count).
  • Creerà N righe quanti sono gli elementi del sorgente delle informazioni (l’array da cui pescherai i dati).
  • Riempirà ogni riga con una UITableViewCell (cioè il luogo dove effettivamente vedrai il testo).

In più, imparerai ad aggiungere un nuovo elemento nella tabella, a ricercare gli elementi, a mostrare delle liste filtrate in base al testo cercato e a spostarti in una seconda View per la visualizzazione dei dettagli dell’elemento selezionato in tabella.

Sei pronto a creare una Table View con ricerca in Swift? Iniziamo!

Aggiungere una TableView con il TableViewController

Apri Xcode e crea un nuovo progetto (puoi farlo andando su File\New\Project nella barra in alto):

  1. Seleziona, come template, il Single View Application e clicca su Next.
  2. Rinomina il progetto in  “ListaSpesa” e fai attenzione che il Language di programmazione sia Swift e il Devices iPhone.
  3. Clicca su Finish, seleziona la cartella dove salvare il progetto e poi clicca su Create.

Torna al progetto! adesso devi pulirlo da file e elementi che per ora non ti interessano.

Dal Project navigator (il menu a destra dove vengono visualizzati i file) elimina il ViewController.swift (tasto destro, delete e poi move to trash per spostare il file nel cestino). Eliminato il file, entra nel Main.storyBoard ed elimina il View Controller (per eliminarlo, premi i tasti cmd+x). Dovresti avere uno Storyboard senza niente al suo interno, per sicurezza guarda l’immagine animata qui sotto se non ci sei riuscito da solo:

Eliminare il ViewController

Dall’Object Browser (la finestra in basso a destra da dove si selezionano gli oggetti per le View) prendi un oggetto Navigation Controller e trascinalo dentro lo storyBoard.

aggiungere un navigation controller e table view controller

Il Navigation Controller insieme a se stesso trascinerà anche una Table View Controller che sarà la prima View vista all’apertura della tua app.

Cos’è il Navigation Controller?

Il Navigation Controller è un oggetto che sblocca le funzionalità di navigazione tra le varie View della tua applicazione ed è invisibile all’utilizzatore. Se trascinato dall’Object Browser (si può implementare anche in diversi modi), porta con se un Table View Controller il quale sarà lui ad essere visualizzato quando aprirai l’applicazione. Un esempio del suo utilizzo? quando inserisci un Navigation Controller vengono inseriti in maniera automatica i bottoni per tornare indietro tra le View.

IsInitialViewController, il punto di partenza della tua applicazione

Dato che hai eliminato il ViewController, inserito in automatico dal template selezionato per la creazione del progetto, l’applicazione non sa più da quale ViewController deve partire quando avvierai il progetto.

Infatti Xcode, in questo momento, dovrebbe avvisarti di due errori in giallo (non gravi ma da sistemare). Uno di questi è “Scene is unreachable” cioè l’applicazione non sa da dove deve partire.

isInitialViewController per NavigationController

Torna nello storyboard.

Seleziona il Navigation Controller (anche se graficamente è il primo Controller che abbiamo creato, potrebbe non essere l’Initial), vai nell’Attributes Inspector e seleziona la casella Is Initial View Controller:

is initial view controller

A questo punto puoi benissimo avviare la tua applicazione. Vedrai che, come ti dicevo, il NavigationController non verrà visualizzato perché è solamente uno strumento che regola i passaggi tra i ViewController dell’applicazione. Infatti, ciò che vedrai sarà il tuo TableViewController.

L’altro errore in giallo lo sistemerai tra pochissimo.

La classe UITableViewController

Manca il file per la relativa gestione della UITableViewController che hai appena inserito (conterrà anche la gestione della UISearchBar). Crea un nuovo file cliccando con il destro sulla cartella ListaSpesa e selezionate New File… Scegli come file una Cocoa Touch Class e clicca su Next.

Rinomina la classe in ListaTableViewController, impostala come sottoclasse della classe madre UITableViewController e assicuratevi di aver selezionato Swift come linguaggio di programmazione:

Aggiungere una cocoa touch class in swift e Xcode 6

Se non hai le conoscenze basilari di programmazione ad oggetti il file che verrà generato ti sembrerà peggio del famosissimo aramaico antico.

Per questo motivo è necessario avere un pizzico delle suddette conoscenze e pertanto ti invito a leggere questa lezione e le successive: Programmazione ad oggetti in SwiftIn più, queste lezioni, ti mostreranno cosa realmente è la programmazione ad oggetti (almeno spero di riuscirci) e come utilizzarla appieno per progettare un’ottima applicazione.

Non lo faccio per farti perdere tempo o chissà per quale altro motivo, lo faccio semplicemente perché so cosa si prova dall’altro lato quando si cerca di imparare a realizzare qualcosa, magari un sogno.

Collegare la User Interface al codice

Adesso devi associare la classe contenuta nel file ListaTableViewController.swift al TableViewController dello Storyboard. In questo modo non sarà più la classe generica UITableViewController a controllare la tua TableView bensì sarà la tua classe ListaTableViewController ad occuparsene.

Apri il Main.storyboard e seleziona il RootViewController.

Nel menu in alto a destra apri l’Identity Inspector (il terzo bottone partendo da sinistra), metti come Class la ListaTableViewController (dovrebbe spuntarti in automatico appena cominci a scrivere) e premi Invio.

collegare un interfacecontroller ad una classe di riferimento

L’immagine è del vecchio tutorial. I passaggi sono comunque gli stessi.

Da storyboard, clicca due volte sul titolo del Root View Controller e rinominalo in Lista Spesa.

Il Cell Identifier. Come identificare una cella da codice

La tableView che vedi nel tuo storyboard ha anche una UITableViewCell associata. Questa cella viene chiamata Prototype Cell perché, la tabella, prenderà questa cella e la clonerà tante volte quanti saranno gli elementi da mostrare. A queste prototype cell puoi aggiungere degli elementi grafici, come label e bottoni, per personalizzarne il loro aspetto.

Dato che, in una tabella, possono esserci diverse Prototype Cell e dato che dovrai gestirle da codice, è necessario definire un codice identificativo. Così la tabella, grazie a questo codice, saprà quale UITableViewCell utilizzare per la visualizzazione corretta del contenuto.

Il codice Identificativo prende il nome di Identifier. L’Identifier è importantissimo, infatti, l’ultimo errore che ti mostra Xcode è proprio legato alla mancanza di questo identifier.

Seleziona l’unica UITableViewCell presente nel TableViewControllerDall’Attributes Inspector imposta l’Identifier uguale a Cella. Questa stringa la ritroverai più avanti quando vedrai come gestire la tabella da codice:

L'Identifier di una UITableViewCell

La struttura per gli Alimenti

Adesso devi creare una struttura che rappresenterà gli alimenti che l’utente inserirà nella lista. Sarà definita da due attributi, un nome e una categoria.

Clicca con il destro sulla cartella ListaSpesa nel menu del Project Navigator (alla tua sinistra) e seleziona New File… poi premi su Swift File, clicca su Next e salva il file con il nome: Alimento.

Aggiungere un nuovo Swift file

Adesso aggiungi il seguente codice al file:

La struttura che hai creato permetterà all’utente di poter inserire gli alimenti in una determinata categoria. Nota come la costante “categoria” è un array, ho preferito questa scelta perché alcuni alimenti potrebbero rientrare in più categorie diverse.

Così, quando vorrai cercare un elemento, avrai la possibilità di utilizzare, oltre alla classica ricerca per nome, la ricerca degli elementi solo all’interno di una determinata categoria.

Quando gli elementi di un’applicazione si fanno davvero tanti, avere un sistema che filtri i contenuti può farti evitare che gli utenti diano fuoco al proprio dispositivo.

La lista della Spesa e La creazione dell’array

Creata la struttura che rappresenterà l’alimento, serve qualcosa che contenga una serie di alimenti, ad esempio una lista.

La lista sarà rappresentata da un Array di tipo Alimento. Per implementare l’array, apri il file ListaTableViewController.swift e sotto la definizione della classe aggiungi il seguente codice:

creazione di una lista in swift e Xcode 6

La listaSpesa si occuperà di conservare tutti gli oggetti Alimento che la tua Table View conterrà. Dato che la fame è fame! Devi per forza aggiungere qualche Alimento alla tua lista.

All’interno del metodo ViewDidLoad() aggiungi il seguente codice:

Il metodo viewDidLoad(), come suggerisce il nome, viene invocato dopo l’allocazione in memoria del View Controller in questione. In questo modo tutto ciò che viene inserito al suo interno viene caricato insieme alla creazione, e quindi qualche istante prima dell’apparizione della View sullo schermo della tua applicazione.

Il codice all’interno del viewDidLoad inizializza la lista, crea ed instanzia degli alimenti al suo interno. Precisamente aggiunge 3 alimenti di categoria Dolci, 2 di categoria Carne e 2 di categoria Altro. Te lo ripeto, qualora ti stessi chiedendo: ma a che servono? ti rispondo che le categorie saranno importantissime quando ti mostrerò come filtrare gli elementi della lista.

Il metodo reloadData() per la tableView ricarica i dati in tabella invocando i metodi che adesso ti andrò ad elencare e spiegare. Il self serve a specificare che ti stai riferendo all’attributo tableView associata alla classe TableViewController,

self, metodo, oggetto? ti avevo avvertito che molte cose riguardano la programmazione ad oggetti, quindi se ancora non lo hai fatto sei in tempo per imparare le prime nozioni basilari di OOPApprofondisci gli argomenti e non commettere l’errore che fanno tutti.

I metodi per la gestione del TableViewController

Partiamo da cos’è una TableView e da cos’è composta. Per rendere meglio l’idea utilizzerò un’immagine dell’app a tutorial ultimato:

gli elementi che compongono una TableView in Swift

  • Il componente più interno è la UITableViewCell ed è il contenitore che mostra le informazioni all’utente. Dentro una Cell puoi inserire, oltre ad un normale testo, immagini, ulteriori campi di testo, altre sotto view e tutto ciò che più ti aggrada.
  • Una Cell è contenuta all’interno di una Row (riga). Una Table View può avere una o più di una Row. Ogni riga possiede un index (indice) numerico intero e la numerazione delle righe parte dall’alto verso il basso (la riga in alto ha valore 0).
  • Le righe a loro volta sono contenute all’interno di una Section. Una Table View può avere più section e ogni section ha una sua personale collezione di righe, ognuna indipendente dalle altre section. Anche le Section vengono numerate seguendo un indice numero intero.

Fatta questa premessa, passiamo ad analizzare come vengono riempite le section, row e cell.

numberOfRowsInSection: Definire il numero di righe della TableView

Esistono due metodi creati a tale scopo che si chiamano numberOfSectionInTableView e numberOfRowsInSection. Sotto il metodo viewDidLoad aggiungi il seguente codice:

La numberOfSectionsInTableView viene invocata prima della creazione delle righe della tabella. Ogni tabella può contenere più sezioni e questo metodo definisce il numero di sezioni di una tabella. Il return 1 imposta una Section alla Table View.

La numberofRowsinSection viene invocata dalla Table View prima del riempimento delle righe e ritorna il numero di righe che deve contenere la sezione. Dato che la tabella mostrerà un alimento della lista, per ogni riga, allora le righe della Table View devono essere uguali al numero di elementi dell’array listaSpesa.

cellForRowAtIndexPath: Riempire le righe di una Table View con una cell

Adesso hai sia 1 sezione che al suo interno ha un numero di righe uguali a quello del numero d’elementi dell’array.

L’ultimo metodo che manca all’appello è il cellForRowAtIndextPath ed è colui che inserisce una Cell all’interno di ogni riga della TableView:

come funziona la cellForRowAtIndexPath?

La cellForRowAtIndexPath viene invocata ciclicamente. Parte dalla Row 0 (riga 0) e esegue lo stesso codice, scorrendo il numero di Row, per un numero di volte pari a IndexPath.count (il numero di righe della tabella). Quindi se IndexPath = 0 è la prima riga in alto, mentre se IndexPath = n è l’ultima riga.

Ad ogni ciclo viene ritornata una UITableViewCell, dal metodo dequeuReusableCellWithIdentifier, che verrà “incollata” alla riga di posizione IndexPath.

Il metodo cellForRowAtIndexPath viene ripetuto tante volte quante sono le righe della Table View. Nel frattempo, utilizziamo una textLabel, cioè una UILabel dove mettere del testo (il nome dell’alimento).

Il primo Build & Run. Era anche ora!

Salva e prova l’applicazione premendo Build & Run (Il bottone triangolare in alto a sinistra). Olè! La Table View mostra tutti gli elementi della lista:

primo run applicazione tableview iOS e swift

Se vuoi investigare maggiormente l’utilizzo delle tabelle e avere una visione più dettagliata di questi metodi e del loro utilizzo, puoi farlo acquistando il mio corso di sviluppo applicazioni iOS con il linguaggio Swift.

prenditi una pausa

Sei a metà di un tutorial composto da quasi 5000 parole. In questi casi ti consiglio di prende una pausa di almeno 10 minuti, nel frattempo puoi fare una partita a League of Legends, cazzeggiare o uscire. Fai un po’ quello che ti pare ma se inizi ad essere confuso non continuare con il tutorial.

condividi xCoding

Nel frattempo che sei in pausa sarei davvero felice se contribuissi al mio progetto semplicemente mettendo un mi piace, follow alle mie pagine oppure registrandoti alla newsletter:

[addtoany]

Grazie davvero :-)

SearchBar e ricerca in tabella

Pausa fatta? ora sei nella seconda parte, quella dedicata alla ricerca di un elemento in lista.

Per creare una barra di ricerca o Search Bar è necessario utilizzare un oggetto chiamato UISearchController che gestisce l’interfaccia di ricerca e il modo in cui gli oggetti vengono ricercati all’interno di una collezione qualsiasi come un array o dizionario.

Fai attenzione perché quest’oggetto non è specifico della Table View ma è utilizzabile in qualsiasi contesto e situazione. In questo tutorial mi limito ad applicarlo ad una Table View ma ricordati che puoi utilizzarlo anche per progetti futuri. Se, per esempio, prendi l’applicazione di iOS Impostazioni il SearchBarController è quella barra in alto che ti permette di cercare velocemente tra le impostazioni dell’iPhone/iPad.

Apri il file ListaTableViewController.swift e sotto la definizione della classe aggiungi (sotto la var listaSpesa):

Dato che la search bar non la inserirai da storyboard ma da codice, all’interno del metodo viewDidLoad, aggiungi:

Dato che il metodo viewDidLoad, come già visto per la listaSpesa, serve ad inizializzare qualcosa prima che l’app venga visualizzata, in questo caso, inizializzerà il searchController prima dell’apertura dell’app.

Il SearchController è una sorta di ViewController simile per le caratteristiche a quella della UITableViewController di cui ti ho parlato poc’anzi. L’inizializzazione di questo oggetto avviene tramite il costruttore principale che vuole come unico parametro (searchResultsController) il Controller che gestirà la visualizzazione degli elementi cercati. Dato che gli elementi cercati saranno visualizzati nella TableViewController, e la SearchController si trova dentro la classe ListaTableViewController, non c’è bisogno di passargli il suo riferimento.

Non confondere il SearchController con la Search Bar. Quest’ultima è contenuta all’interno del Controller. Un po’ come se fosse un elemento interno. Quindi il Controller è il contenitore o colui che gestisce gli eventi di ricerca e la visualizzazione in sé, mentre la Search Bar vera e propria, per intenderci la barra dove inserirai i dati, è un elemento contenuto all’interno del Search Controller.

Con il sizeToFit fai in modo che la Search Bar si estenda per intero per tutta la larghezza del dispositivo.

Mentre la riga:

Aggiunge la SearchBar alla barra superiore della TableView ed è proprio quest’ultimo passaggio a far in modo che la barra venga visualizzata.

Se ti compare un errore, non preoccuparti! verrà corretto nel prossimo paragrafo.

Il codice che ti ho appena mostrato si trova all’interno di un blocco di istruzioni che viene definito Closure, ti faccio notare come la conoscenza di un linguaggio è fondamentale per la buona riuscita di un progetto.

UISearchResultsUpdating e updateSearchResultsForSearchController

Per permettere, alla classe ListaTableViewController, di rispondere ai metodi di ricerca e trattare la Search Bar devi implementare il protocol UISearchResultsUpdating alla classe ListaTableViewController. In questo modo la classe ListaTableViewController sarà delegata alla gestione degli eventi della Search Bar.

Apri il file ListaTableViewController.swift e cambia la definizione di classe con la seguente:

UISearchResultsUpdating permette di aggiornare il Search Controller in base agli eventi che l’utente genera scrivendo o interagendo con la Search Bar.

Infine, aggiungi il metodo updatesearchResultsForSearchController che verrà attivato ogni qual volta l’utente cliccherà sulla barra di ricerca:

 

Se adesso avvii l’applicazione, vedrai comparire la barra di ricerca e, se ci cliccherai, vedrai che verrà invocato il metodo updateSearchResultsForSearchController che stamperà sulla console il messaggio del print:

secondo run applicazione tableview iOS e swift

Filtrare gli elementi della TableView

Adesso è arrivato il momento di stravolgere un po’ le cose!

Sotto la definizione della variabile che gestisce la lista, aggiungi la variabile listaFiltrata che conterrà gli elementi della ricerca:

Subito dopo implementa il metodo per la ricerca degli elementi:

Il metodo, che ho creato, filtra gli elementi della ListaSpesa in base al testoCercato e allo Scope.

  1. Il testoCercato è il testo che inserirai nella TextField della SearchBar.
  2. Lo Scope (che ti mostrerò successivamente) sono dei bottoni che appaiono sotto la SearchBar che ti permettono di scegliere quale filtro applicare alla ricerca (ad esempio: ricerca solo sulla categoria Dolci ecc).
    Di default il valore della funzione associato allo Scope è impostato su “Tutti”, infatti quando non verrà selezionato uno Scope allora la funzione cercherà all’interno di tutte le categorie.

La funzione, prima rimuove, qualora vi fossero, tutti gli elementi precedentemente inseriti nell’array listaFiltrata e ne mantiene la capacità (la dimensione). Poi passa ad iterare tutti gli oggetti Alimento presenti nel vettore listaSpesa. Il ciclo all’interno, enumera le categorie dell’Alimento iterato, verifica se lo scope è impostato su Tutti oppure su uno dei bottoni e, se lo è, allora controlla che il testoCercato è uguale a quello dell’Alimento. Se il testoCercato corrisponde al nome dell’Alimento allora viene inserito nella listaFiltrata se no va avanti al ciclo successivo.

Infine, inserisci una chiamata di questa funzione all’interno del metodo updateSearchResultsForSearchController:

 

 

Mostrare gli elementi filtrati nella TableView

Se hai provato ad avviare nuovamente la tua app ti sarai accorto di come essa non mostra l’elemento cercato! Questo perché non hai aggiornato la visualizzazione degli elementi nella Table View.

La Table View non sa quando mostrare gli elementi filtrati e quando no. Per risolvere questo problema devi modificare sia il metodo che gestisce il numero di righe (numberOfRowsInSection) che quelle del contenuto delle righe (cellForRowAtIndexPath):

Adesso se provi a cercare un alimento, scrivendo sulla search Bar, dovresti vedere i risultati nella Table View:

terzo run applicazione tableview iOS e swift

La Scope Bar e filtri per categoria

Poter cercare gli elementi solo in una determinata categoria, in alcuni contesti, può diventare di vitale importanza. Pensa ad esempio quando vuoi cercare una persona in una provincia. Un conto è cercarlo in tutte le province un conto è cercarlo solo in una determinata provincia.

Per inserire una Scope Bar ti basta aggiungere il seguente codice alla closure con cui hai creato il resultSearchController:

Gli Scope Button Titles, dato che voglio cercare all’interno di una specifica categoria, sono uguali a quelli delle tue categorie: Tutti, Dolci, Carne e Altro (“Tutti” anche se non fa parte delle categorie, dal codice, ti permetterà di cercare in tutte le categorie).

Modifica il metodo updateSearchResultsForSearchController sostituendogli il codice con il seguente:

Adesso quando starterai l’app avrai la possibilità di ricercare gli elementi solo in una particolare categoria. Ricordati però che prima devi selezionare la categoria e poi cercare:

App lista in Swift e Xcode con Table View e Search Bar

Il prepareForSegue: Mandare una informazione ad un altro ViewController

Andrò un po’ più veloce perché questi concetti che ti andrò ad illustrare li ho spiegati nel dettaglio in questo tutorial: Passare le informazioni tra più ViewController.

Potremmo terminare il progetto anche qua, però… a mio modesto parere non è ancora del tutto completo.

Una cosa che molte applicazioni di questo genere hanno è la possibilità di vedere i dettagli di un oggetto della Table View. In pratica, una volta che selezioni un oggetto nella tabella hai la possibilità di spostarti in un’altra finestra dove visualizzarne i dettagli.

Per questo motivo ti serve un View Controller in più che mostri i dettagli dei prodotti della lista quando l’utente seleziona un elemento dalla Table View. Trascina un oggetto View Controller nello Storyboard (Allo stesso modo di quanto hai fatto con il NavigationController).

segue mandare informazioni ad altra view

Se ci fai caso, il Navigation Controller è collegato con il TableViewController da una freccia mentre il ViewController appena inserito non lo è con il TableView. Il collegamento tra due Controller si chiama Segue ed è quello che permette di spostarsi da una View all’altra.

Per creare un Segue, seleziona il Table View Controller e premendo Ctrl+click sinistro, trascina la freccia verso il nuovo View Controller. Si aprirà un menu dove dovrai selezionare show come tipo di Segue (lo show non è altro che l’animazione che intercorre tra il passaggio da una View all’altra):

Creare un nuovo VC e Segue per TableView

Inoltre l’operazione di collegamento tra View fa in modo che il ricevente del collegamento acquisisca anche le proprietà del Navigation Controller, in questo modo, ad esempio, non dovrai inserire il bottone “torna indietro” perché lo aggiungerà automaticamente grazie al collegamento implicito con il Navigation Controller.

Crea un nuovo File di Tipo Cocoa Touch. Chiamalo DetailViewController ed impostalo come subclass della UIViewController. Allo stesso modo di quanto hai fatto per la tabella, seleziona il VC appena inserito e cambiagli la custom class:

nuovo file e custom class per VC

Il Segue Identifier

Apri, per l’ultima volta, lo storyBoard. Seleziona la freccia che va dalla TableViewController al View Controller che conterrà i dettagli e, sempre dall’Attributes Inspector, rinomina l’Identifier del segue in dettaglioAlimentoSegue:

identifier segue

Torna alla ListaTableViewController.swift e aggiungi i seguenti metodi:

Considerazioni e Download del progetto

Creare una Table View con ricerca in Swift non è stato per niente difficoltoso (certe volte so essere simpatico anche io :D). A parte gli scherzi, conoscere il linguaggio Swift e come si sviluppano le applicazioni per iOS con Swift può aiutarti sensibilmente a comprendere tutti i passaggi del progetto.

Ricordati che il modulo di ricerca può far si che la tua applicazione abbia successo oppure no. Fidati, tantissime applicazioni sono fallite perché non permettevano di cercare all’interno dell’applicazione. Infatti applicazioni che permettono di gestire liste o promemoria ce n’è a bizzeffe ma quelle che hanno successo sono veramente poche, il motivo io lo attribuisco alla velocità con cui si può accedere alle informazioni (oltre alla grafica è all’usabilità).

Un utilizzatore medio non vuole vedere 400 bottoni o aspettare mezz’ora per cercare una cosa, vuole semplicemente utilizzare l’app senza troppi sforzi!

Dove andare da qui

I tutorial che adesso ti consiglio di fare, seguendo l’ordine, sono:

  1. Creare un’App lista in Swift – Aggiungere ed eliminare elementi da una Table View
  2. Creare un Promemoria in Swift per iOS
  3. Passare informazioni da View a View in Swift 
  4. Tutorial Core Data in Swift, salvare oggetti nel dispositivo

Scaricare il progetto finale

Se hai avuto problemi con il tuo progetto, qui sotto puoi scaricare quello fatto da me (devi sbloccare il modulo):

[sociallocker]

DropBox Download

[/sociallocker]

Buona Programmazione!

Start typing and press Enter to search

Come creare una applicazione di Foto Editing per iOS con Swift.Come aggiungere ed eliminare da una TableView in Swift