{"id":3615,"date":"2010-06-04T11:41:51","date_gmt":"2010-06-04T09:41:51","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=3615"},"modified":"2010-06-04T12:06:17","modified_gmt":"2010-06-04T10:06:17","slug":"t050-creiamo-un-client-twitter-per-iphone-parte-2","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/t050-creiamo-un-client-twitter-per-iphone-parte-2\/","title":{"rendered":"T#050 \u2013 Creiamo un client Twitter per iPhone (Parte 2)"},"content":{"rendered":"<p><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-17.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-3632\" title=\"Immagine 17\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-17.png\" alt=\"\" width=\"52\" height=\"96\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-17.png 414w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-17-161x300.png 161w\" sizes=\"auto, (max-width: 52px) 100vw, 52px\" \/><\/a> Nella\u00a0<a href=\"http:\/\/www.devapp.it\/wordpress\/t049-creiamo-un-client-twitter-per-iphone-parte-1.html\" target=\"_blank\">prima parte<\/a> di questo tutorial abbiamo visto come aggiungere la libreria <strong>MGTwitterEngine<\/strong> e come leggere la nostra timeline di Twitter.<\/p>\n<p>In questo secondo appuntamento vedremo, invece, come creare una tabella personalizzata, che dovr\u00e0 visualizzare gli elementi <em>Tweet<\/em> che abbiamo salvato nella lista. Utilizzeremo, quindi,\u00a0 la classe<strong>UITableViewCell<\/strong> per creare delle celle personalizzate, in modo da ottenere una tabella con un layout ad-hoc.<!--more--><\/p>\n<p>Vi ricordo che per seguire questo tutorial \u00e8 necessario avere a disposizione il codice sorgente della prima parte.<\/p>\n<h4>1) Creiamo la tabella<\/h4>\n<p>Come prima cosa, andiamo a creare la tabella che conterr\u00e0 i tweet letti dalla nostra timeline. Iniziamo a creare, quindi, una tabella e la relativa classe per gestirla.<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/img1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3616\" title=\"img1\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/img1-300x249.png\" alt=\"\" width=\"300\" height=\"249\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/img1-300x249.png 300w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/img1.png 813w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Facendo cos\u00ec avremo gi\u00e0 un file &#8220;.xib&#8221; contenente una tabella e la classe associata, risparmiando tempo e lavoro. Se abbiamo creato tutto in modo corretto avremo i seguenti file nel nostro progetto (io li ho spostati per avere tutto ordinato):<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3617\" title=\"Immagine 2\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-2.png\" alt=\"\" width=\"276\" height=\"310\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-2.png 276w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-2-267x300.png 267w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-2-133x150.png 133w\" sizes=\"auto, (max-width: 276px) 100vw, 276px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Apriamo il file &#8220;tabellaTwitterViewController.xib&#8221;, dovremo fare una piccola modifica. Dal Pannello dei Documenti selezioniamo la &#8220;Table View&#8221; (ovvero la tabella) e apriamo poi il &#8220;Size Inspector&#8221;. Modifichiamo l&#8217;altezza delle celle, portando il valore a 70. Il campo da modificare \u00e8 il seguente:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3618\" title=\"Immagine 3\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-3.png\" alt=\"\" width=\"301\" height=\"263\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-3.png 301w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-3-300x262.png 300w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-3-150x131.png 150w\" sizes=\"auto, (max-width: 301px) 100vw, 301px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Ovviamente potete dimensionare le celle a vostro piacimento, io ho ritenuto questa dimensione accettabile per la struttura che avevo in mente.<\/p>\n<p>Abbiamo cos\u00ec concluso la definizione grafica della tabella. Possiamo salvare e chiudere Interface Builder.<\/p>\n<h4>2) Creiamo la cella personalizzata<\/h4>\n<p>Vediamo, ora, un&#8217;aspetto nuovo. Solitamente quando utilizziamo le tabelle ci limitiano ad inseriro del testo che sar\u00e0 contenuto all&#8217;interno della cella. Per questo tutorial, invece, andremo a creare una nostra cella personalizzata, che comporr\u00e0 poi la tabella.<\/p>\n<p>Il procedimento non \u00e8 difficile, per\u00f2 merita attenzione per non perdere nessun passaggio. Iniziamo creando ancora un file xib vuoto (&#8220;File&#8221; -> &#8220;New File&#8230;&#8221; -> &#8220;Empty XIB&#8221;) e chiamiamolo &#8220;cellaTweet&#8221;. Facciamo doppio clic sul file appena creato per aprirlo in IB.<\/p>\n<p>Questa volta inseriamo all&#8217;interno della vista un componente di tipo &#8220;UITableViewCell&#8221;:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-4.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3619\" title=\"Immagine 4\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-4-300x224.png\" alt=\"\" width=\"300\" height=\"224\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-4-300x224.png 300w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-4-150x112.png 150w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-4.png 680w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Facciamo doppio clic sul componente che abbiamo appena inserito, si aprir\u00e0 questa piccola vista:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-5.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3620\" title=\"Immagine 5\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-5.png\" alt=\"\" width=\"400\" height=\"146\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-5.png 400w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-5-300x109.png 300w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-5-150x54.png 150w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Questa \u00e8 la base della nostra cella personalizzata. Fra poco inseriremo i componenti che conterranno poi le informazioni che desideriamo (che saranno, ovviamente, quelle che abbiamo fatto salvare nella prima parte del tutorial, quindi nome utente, testo del tweet e immagine dell&#8217;utente). Prima di fare ci\u00f2, andiamo nel &#8220;Size Inspector&#8221; e modifichiamo l&#8217;altezza a 70 (lo stesso valore che abbiamo impostato prima nella tabella, ricordate?):<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-6.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3621\" title=\"Immagine 6\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-6.png\" alt=\"\" width=\"301\" height=\"444\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-6.png 301w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-6-203x300.png 203w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-6-101x150.png 101w\" sizes=\"auto, (max-width: 301px) 100vw, 301px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Andiamo, poi, nell&#8217; &#8220;Attributes Inspector&#8221; e nel campo &#8220;Identifier&#8221; inseriamo &#8220;Cell&#8221;:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-7.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3622\" title=\"Immagine 7\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-7.png\" alt=\"\" width=\"301\" height=\"329\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-7.png 301w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-7-274x300.png 274w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-7-137x150.png 137w\" sizes=\"auto, (max-width: 301px) 100vw, 301px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Ora inseriamo gli elementi che dovranno comporre tutte le singole celle. Ci servir\u00e0 una <em>UIImageView<\/em> e due <em>UILabel<\/em>. Io le ho disposte e personalizzate come vedete di seguito, voi siete liberissimi di inserirle in maniera diversa!<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-8.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3623\" title=\"Immagine 8\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-8.png\" alt=\"\" width=\"400\" height=\"172\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-8.png 400w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-8-300x129.png 300w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-8-150x64.png 150w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Manca solo una piccola operazione. Dobbiamo dare ai componenti un <strong>id univoco<\/strong>, in modo che potremo, poi, selezionarli via codice in maniera molto veloce. Selezioniamo la <em>UIImageView<\/em> e andiamo nell&#8217; &#8220;Attributes Inspector&#8221;. Nel campo <strong>tag<\/strong> inseriamo il valore 0 (dovrebbe gi\u00e0 essere presente):<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-9.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3624\" title=\"Immagine 9\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-9.png\" alt=\"\" width=\"301\" height=\"361\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-9.png 301w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-9-250x300.png 250w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-9-125x150.png 125w\" sizes=\"auto, (max-width: 301px) 100vw, 301px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Facciamo la stessa operazione con le due <em>label<\/em>, impostando per la label del nome utente il tag 1, mentre per la label che conterr\u00e0 il testo del tweet il tag 2. Questa seconda label conterr\u00e0 il testo dei tweet, quindi dobbiamo fare in modo che possa contenere pi\u00f9 testo. Riduciamo le dimensioni del font e impostiamo il numero massimo di righe a 2:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-10.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3625\" title=\"Immagine 10\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-10.png\" alt=\"\" width=\"301\" height=\"412\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-10.png 301w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-10-219x300.png 219w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-10-109x150.png 109w\" sizes=\"auto, (max-width: 301px) 100vw, 301px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Abbiamo cos\u00ec concluso anche la definizione della cella personalizzata. Come vedete questo metodo \u00e8 molto versatile, potrete personalizzare al massimo qualsiasi tabella!<\/p>\n<h4>3) Definiamo la classe della tabella<\/h4>\n<p>Dobbiamo ora iniziare a mettere mano al codice. Per prima cosa definiamo la tabella che mostrer\u00e0 i tweet che abbiamo letto durante il caricamento dell&#8217;applicazione.<\/p>\n<p>Ecco il codice da inserire nel file &#8220;TabellaTwitterViewController.h&#8221;:<\/p>\n<pre lang=\"ObjC\" line=\"1\">\r\n#import <UIKit\/UIKit.h>\r\n\r\n@interface TabellaTwitterViewController : UITableViewController {\r\n NSMutableArray *lista;\r\n UITableViewCell *cellaNib;\r\n}\r\n\r\n@property (nonatomic, retain) NSMutableArray *lista;\r\n@property (nonatomic, retain) IBOutlet UITableViewCell *cellaNib;\r\n\r\n- (UIImage *)scale:(UIImage *)image toSize:(CGSize)size;\r\n\r\n@end\r\n<\/pre>\n<p>Come vedete il codice rispecchia quello che solitamente \u00e8 utilizzato quando utilizziamo delle tabella. Abbiamo definito una lista di elementi (alla riga 4), che sar\u00e0 la stessa che abbiamo definito nella classe &#8220;SampleTwitterClientViewController&#8221;. L&#8217;elemento &#8220;cellaNib&#8221;, invece, corrisponder\u00e0 alla cella che abbiamo creato poco fa in Interface Builder.<br \/>\nAlla riga 11, infine, troviamo la definizione di un metodo &#8220;scale&#8221;, che ci permetter\u00e0 di ridimensionare l&#8217;immagine per essere contenuta interamente nella <em>UIImageView<\/em> contenuta nella cella personalizzata.<\/p>\n<p>Definiamo, ora, il contenuto del file &#8220;TabellaTwitterViewController.m&#8221;. Iniziamo inserendo le seguenti intestazioni:<\/p>\n<pre lang=\"ObjC\" line=\"1\">\r\n#import \"TabellaTwitterViewController.h\"\r\n#import \"Tweet.h\"\r\n\r\n@implementation TabellaTwitterViewController\r\n\r\n@synthesize lista, cellaNib;\r\n<\/pre>\n<p>Modifichiamo, poi, il metodo &#8220;tableView: numberOfRowInSection:&#8221; impostando come valore di ritorno la dimensione della lista:<\/p>\n<pre lang=\"ObjC\" line=\"1\">\r\n- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {\r\n return [lista count];\r\n}\r\n<\/pre>\n<p>Ora dobbiamo implementare il metodo &#8220;tableView: cellForRowAtIndexPath:&#8221;. \u00c8 un po&#8217; diverso dal solito, eccovelo:<\/p>\n<pre lang=\"ObjC\" line=\"1\">\r\n- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {\r\n\r\n static NSString *CellIdentifier = @\"Cell\";\r\n\r\n UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];\r\n if (cell == nil) {\r\n [[NSBundle mainBundle] loadNibNamed:@\"cellaTweet\" owner:self options:NULL];\r\n cell = cellaNib;\r\n }\r\n\r\n Tweet *elemento = [lista objectAtIndex:indexPath.row];\r\n UILabel *testoLabel = (UILabel*)[cell viewWithTag:2];\r\n testoLabel.text = elemento.testo;\r\n UILabel *userLabel = (UILabel*)[cell viewWithTag:1];\r\n userLabel.text = elemento.user;\r\n\r\n UIImageView *immagine = (UIImageView*)[cell viewWithTag:0];\r\n [immagine setImage:[self scale:elemento.immagine toSize:CGSizeMake(60, 60)]];\r\n\r\n return cell;\r\n}\r\n<\/pre>\n<p>Come potete vedere, l&#8217;inizializzazione della cella avviene in maniera diversa dal solito. Alla riga 7, infatti, viene creata una nuova cella partendo dal file xib &#8220;cellaTweet&#8221;. Nelle istruzioni successive vengono invece settate le varie informazioni del tweet (nome utente, testo e immagine). Potete vedere che l&#8217;elemento della cella viene richiamato medianto l&#8217;uso del tag (con la funzione <strong>[cell viewWithTag:X]<\/strong>), ecco perch\u00e8 prima lo abbiamo impostato in Interface Builder.<br \/>\nL&#8217;imagine, inoltre, viene ridimensionata con la funzione &#8220;scale: toSize:&#8221;. Importante sono i valori che vengono passati nell&#8217;oggetto CGMakeSize: essi sono le dimensioni a cui vogliamo ridimensionare le nostre immagini (devono corrispondere con le dimensioni che avete impostato alla UIImageView nella cella personalizzata).<\/p>\n<p>Ecco, quindi, la definizione del metodo che ridimensiona le immagini:<\/p>\n<pre lang=\"ObjC\" line=\"1\">\r\n- (UIImage *)scale:(UIImage *)image toSize:(CGSize)size{\r\n UIGraphicsBeginImageContext(size);\r\n [image drawInRect:CGRectMake(0, 0, size.width, size.height)];\r\n UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();\r\n UIGraphicsEndImageContext();\r\n return scaledImage;\r\n}\r\n<\/pre>\n<p>Non commento questo metodo, in quanto l&#8217;ho trovato anche io su Internet, per la precisione a <a href=\"http:\/\/stackoverflow.com\/questions\/941604\/setting-uiimage-dimensions-on-uitableviewcell-image\" target=\"_blank\">questo indirizzo<\/a>. Ringrazio, quindi, il legittimo autore \ud83d\ude09<\/p>\n<p>La nostra tabella \u00e8 cos\u00ec completa!<\/p>\n<h4>4) Completiamo l&#8217;applicazione<\/h4>\n<p>Ci mancano solo due cose per completare il nostro client.<\/p>\n<p>Per prima cosa, apriamo nuovamente la cella &#8220;cellaTweet.xib&#8221;. Selezioniamo il &#8220;File&#8217;s Owner&#8221; ed entriamo nell'&#8221;Identity Inspector&#8221;. Impostiamo come classe della vista &#8220;TabellaTwitterViewController&#8221;:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-11.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3626\" title=\"Immagine 11\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-11.png\" alt=\"\" width=\"301\" height=\"402\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-11.png 301w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-11-224x300.png 224w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-11-112x150.png 112w\" sizes=\"auto, (max-width: 301px) 100vw, 301px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Spostiamoci, poi, nel pannello &#8220;Connections Inspector&#8221; e colleghiamo l&#8217;elemento &#8220;cellaNib&#8221; al componente UITableViewCell che avevamo in precedenza inserito. Se avete fatto in maniera corretta il collegamento avrete il seguente risultato:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-12.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3627\" title=\"Immagine 12\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-12.png\" alt=\"\" width=\"301\" height=\"214\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-12.png 301w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-12-300x213.png 300w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-12-150x106.png 150w\" sizes=\"auto, (max-width: 301px) 100vw, 301px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Salviamo e chiudiamo Interface Builder.<\/p>\n<p>Dobbiamo ora solo completare il caricamento dell&#8217;applicazione, che deve avviare la tabella dopo aver letto la nostra timeline. Torniamo, quindi, in &#8220;SampleTwitterClientViewController.h&#8221;. Dobbiamo definire un elemento &#8220;TabellaTwitterViewController&#8221;, in modo da poterlo richiamare alla fine del caricamento dei tweet, ed appaia cos\u00ec la nostra tabella. Modifichiamo cos\u00ec il file &#8220;SampleTwitterClientViewController.h&#8221;:<\/p>\n<pre lang=\"ObjC\" line=\"1\">\r\n#import <UIKit\/UIKit.h>\r\n#import \"MGTwitterEngine.h\"\r\n\r\n@class Tweet;\r\n@class TabellaTwitterViewController;\r\n\r\n@interface SampleTwitterClientViewController : UIViewController <MGTwitterEngineDelegate> {\r\n MGTwitterEngine *twitterEngine;\r\n NSMutableArray *listaTweet;\r\n\r\n IBOutlet UIActivityIndicatorView *spinner;\r\n\r\n TabellaTwitterViewController *tabellaTwitterViewController;\r\n}\r\n\r\n-(NSString*)getMessaggio:(NSDictionary*)element;\r\n-(NSString*)getUser:(NSDictionary*)element;\r\n-(NSURL*)getUrlImage:(NSDictionary*)element;\r\n\r\n@property (nonatomic, retain) NSMutableArray *listaTweet;\r\n@property (nonatomic, retain) IBOutlet UIActivityIndicatorView *spinner;\r\n@property (nonatomic, retain) IBOutlet TabellaTwitterViewController *tabellaTwitterViewController;\r\n\r\n@end\r\n<\/pre>\n<p>Andiamo, poi, nel file &#8220;SampleTwitterClientViewController.m&#8221;. Modifichiamo le dichiarazioni e le importazioni nel seguente modo:<\/p>\n<pre lang=\"ObjC\" line=\"1\">\r\n#import \"SampleTwitterClientViewController.h\"\r\n#import \"Tweet.h\"\r\n#import \"TabellaTwitterViewController.h\"\r\n\r\n@implementation SampleTwitterClientViewController\r\n\r\n@synthesize listaTweet, spinner, tabellaTwitterViewController;\r\n<\/pre>\n<p>Modifichiamo, ora, il metodo &#8220;statusesReceived: forRequest:&#8221;, inserendo il seguente codice alla fine di tale metodo:<\/p>\n<pre lang=\"ObjC\" line=\"1\">\r\n [elemento release];\r\n\r\n self.tabellaTwitterViewController.lista = self.listaTweet;\r\n\r\n [spinner stopAnimating];\r\n\r\n [self presentModalViewController:self.tabellaTwitterViewController animated:YES];\r\n<\/pre>\n<p>Con queste semplici righe abbiamo semplicemente impostato la lista degli elementi della nostra tabella, che corrisponder\u00e0 alla lista dei tweet che abbiamo creato in precedenza (parte 1 del tutorial).<\/p>\n<p>Abbiamo quasi terminato! Salviamo tutte le classi che abbiamo appena modificato e apriamo il file &#8220;SampleTwitterClientViewController.xib&#8221;. Inseriamo un elemento &#8220;UIViewController&#8221;:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-13.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3628\" title=\"Immagine 13\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-13-300x198.png\" alt=\"\" width=\"300\" height=\"198\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-13-300x198.png 300w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-13-150x99.png 150w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-13.png 767w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Selezioniamo poi tale elemento e in &#8220;Identity Inspector&#8221; selezioniamo come classe &#8220;TabellaTwitterViewController&#8221;.<\/p>\n<p><center><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-14.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3629\" title=\"Immagine 14\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-14.png\" alt=\"\" width=\"301\" height=\"412\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-14.png 301w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-14-219x300.png 219w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-14-109x150.png 109w\" sizes=\"auto, (max-width: 301px) 100vw, 301px\" \/><\/a><br \/>\n<\/center\n><br \/>\nNell&#8217; &#8220;Attributes Inspector&#8221; selezioniamo il file xib che deve essere associato a questa vista, ovvero &#8220;tabellaTwitterViewController&#8221;:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-15.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3630\" title=\"Immagine 15\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-15.png\" alt=\"\" width=\"301\" height=\"342\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-15.png 301w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-15-264x300.png 264w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-15-132x150.png 132w\" sizes=\"auto, (max-width: 301px) 100vw, 301px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Spostiamoci, infine, nel &#8220;File&#8217;s Owner&#8221; e colleghiamo l&#8217;elemento &#8220;tabellaTwitterViewController&#8221; con l&#8217;elemento UIViewController appena inserito. Ecco come deve presentarsi il pannello dopo il collegamento:<\/p>\n<p><center\n><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-16.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3631\" title=\"Immagine 16\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-16.png\" alt=\"\" width=\"301\" height=\"208\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-16.png 301w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-16-300x207.png 300w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-16-150x103.png 150w\" sizes=\"auto, (max-width: 301px) 100vw, 301px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Abbiamo concluso! Salviamo tutto, chiudiamo Interface Builder e clicchiamo su &#8220;Build and Go!&#8221; e testiamo il nostro personalissimo client di Twitter!<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-17.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3632\" title=\"Immagine 17\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-17.png\" alt=\"\" width=\"414\" height=\"770\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-17.png 414w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-17-161x300.png 161w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/Immagine-17-80x150.png 80w\" sizes=\"auto, (max-width: 414px) 100vw, 414px\" \/><\/a><br \/>\n<\/center><\/p>\n<p style=\"text-align: center;\">\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/SampleTwitterClient_parte2.zip\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/05\/download_icon.png\" alt=\"\" width=\"33\" height=\"40\" align=\"middle\" \/><\/a> Se avete problemi con il tutorial,\u00a0<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/06\/SampleTwitterClient_parte2.zip\">questo \u00e8 il nostro file di progetto.<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nella\u00a0prima parte di questo tutorial abbiamo visto come aggiungere la libreria MGTwitterEngine e come leggere la nostra&#8230;<\/p>\n","protected":false},"author":254,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[216,248,249,27],"class_list":["post-3615","post","type-post","status-publish","format-standard","hentry","category-tutorial-pratici","tag-andrea-busi","tag-mgtwitterengine","tag-twitter","tag-uitableview"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/3615","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/254"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=3615"}],"version-history":[{"count":8,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/3615\/revisions"}],"predecessor-version":[{"id":3640,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/3615\/revisions\/3640"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=3615"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=3615"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=3615"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}