T#040 – Usiamo le UITableView (parte 2): Modifichiamo le celle e intercettiamone il tocco
Eccoci con il secondo tutorial dedicato alle UITableView. Nella prima parte abbiamo visto come creare una tabella ed inserire dei dati. La nostra tabella, però, non permetteva nessuna interazione con l’utente. Oggi vedremo proprio come aggiungere alcune funzioni indispensabili per un’applicazione che sfrutti le tabelle: vedremo come gestire la selezione di una cella, e implementeremo una “barra” da cui potremo eliminare le celle che non ci interessano più.
1. Modificare la tabella: l’evento edit
La prima cosa da fare è inserire un tasto che ci permetta di accedere alla modifica della tabella. Per fare ciò ci basta “scommentare” una riga che dovreste già trovare nel metodo viewDidLoad (riga 12):
1 2 3 4 5 6 7 8 9 10 11 12 13 | - (void)viewDidLoad { [super viewDidLoad]; self.title = @"Prodotti Apple"; //elementi da visualizzare nella tabella lista = [[NSMutableArray alloc] initWithObjects:@"iPhone", @"iPod", @"iPod Touch", @"iMac", @"iBook", @"MacBook", @"MacBook Pro", @"Mac Pro", @"PowerBook", nil]; // Uncomment the following line to display an Edit button in the navigation bar for this view controller. self.navigationItem.rightBarButtonItem = self.editButtonItem; } |
Tutto molto semplice e veloce grazie alle API di Apple.
Se provate ad eseguire l’applicazione noterete che cancellando una riga essa non viene rimossa dalla tabella. Questo succede perchè non abbiamo ancora concluso di implementare questa funzionalità. Inseriamo, quindi, il seguente metodo:
1 2 3 4 5 6 7 8 9 10 11 12 | // Elimina l'elemento dalla tabella e dalla lista - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { //controlla se l'azione compiuta è un'eliminazione if (editingStyle == UITableViewCellEditingStyleDelete) { //elimina l'elemento dalla lista [lista removeObjectAtIndex:indexPath.row]; //elimina le'elemento dalla tabella [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; } } |
Come possiamo notare dalla struttura, anche se un po’ complicata, questo è un metodo del protocollo UITableView, proprio come quello che abbiamo implementato nella prima parte.
Il costrutto if (riga 5) esegue un controllo che, come spiega il commento, controlla se l’azione eseguita sulla tabella è di cancellazione di una riga. Direte voi: “Cosa posso fare d’altro?” Per ora niente, perchè la nostra tabella supporta solo l’eliminazione di una riga, ma volendo si potrebbe implementare anche l’inserimento di una nuova riga oppure altre azioni. È sempre questo metodo che si occupa di gestire tutte le azioni sulla tabella. Ecco spiegata la necessità di questo controllo. Tornando al codice, all’interno dell’if possiamo notare due istruzioni, che eliminano di fatto l’elemento sia dalla lista (riga 7) che dalla tabella (riga 9). In questo modo la cancellazione di una riga è davvero implementata.
2. Rendiamo le celle selezionabili
Vediamo ora di implementare un’altra funzione. Vogliamo che quando l’utente seleziona una cella appaia un pop-up che contenga il nome dell’elemento selezionato. Ovviamente questa azione non ha una grande utilità, ma vi permetterà di imparare come gestire le selezioni dell’utente e vedrete, inoltre, come creare un pop-up.
Prima di implementare il metodo necessario, eliminate dal metodo
“tableView: cellForRowAtIndexPath:” la seguente istruzione (vi ho spiegato nella prima parte a cosa serviva):
1 | cell.selectionStyle = UITableViewCellSelectionStyleNone; |
altrimenti le celle non saranno selezionabili.
Sempre nel file “RootViewController.m” inserite ora questo metodo:
1 2 3 4 5 6 7 | // Se selezioniamo una riga appare un pop-up con l'elemento in questione - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { UIAlertView *popUp = [[UIAlertView alloc] initWithTitle:@"Hai selezionato:" message:[lista objectAtIndex:indexPath.row] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [popUp show]; [popUp release]; } |
Questo è il metodo che si occupa di eseguire una certa azione quando l’utente seleziona una cella. Alla riga 3 possiamo notare la definizione del pop-up (UIAlertView), che conterrà un messaggio con il nome della cella selezionata. È possibile creare pop-up con diversi bottoni o più messaggi, vi basterà guardare la documentazione per trovare tutte le varianti possibili.
Alla riga 6, infine, viene mostrato il pop-up appena definito.
Clicchiamo su “Build and Go!” e gustiamoci la nostra applicazione con le nuove funzionalità!

Nella prossima parte di questo tutorial vedremo come implementare un box per la ricerca, proprio come avviene nell’applicazione nativa Contatti!
| Stampa l'articolo | Questo articolo è stato pubblicato da Andrea Busi il 10 maggio 2010 alle 09:50, ed è archiviato come Tutorial Pratici. Puoi seguire i commenti a questo post attraverso RSS 2.0. Puoi pubblicare un commento o segnalare un trackback dal tuo sito. |













circa 4 mesi fa
chiaro come sempre!
è che io arrivo a mettere in pratica e ci divento matto!!!
ahahhah
circa 4 mesi fa
ahaha, purtroppo non è sempre facile!! ci vuole molto studio e tanta pazienza!
circa 3 mesi fa
Belle guide complimenti
rispetto a tutti i libri in inglese che si trovano in giro, queste guide sono molto piu’ puntuali e meno dispersive.
circa 3 mesi fa
grazie mille, è proprio quello che cerchiamo di fare: tutorial non troppo complessi e che diano un qualcosa di pratico e utile
circa 3 mesi fa
Ciao,
volevo provare a selezionare una cella da codice così che all’apertura mi selezioni direttamente la riga e che compaia l’alert della riga che ho deciso di selezionare da codice..ma non ci riesco proprio..un aiutino please!..:)
(..e mi associo con i complimenti…guide molto semplici e comprensibili che aiutano ad imparare..grazie!..)
circa 3 mesi fa
grazie dei complimenti..
scusa però non ho ben capito cosa tu voglia fare..
circa 3 mesi fa
Se invece io vorrei far comparire una UIView al posto che una UIAllertView quando schiaccio su un prodotto cosa devo fare? Grazie
circa 3 mesi fa
prova a guardare questo tutorial, che prossimamente porteremo su devAPP
circa 3 mesi fa
Grazie Andrea! L’avevo gia visto comunque sono riuscito a fare tutto!