{"id":8184,"date":"2011-12-20T16:09:37","date_gmt":"2011-12-20T15:09:37","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=8184"},"modified":"2012-01-23T13:42:07","modified_gmt":"2012-01-23T12:42:07","slug":"9-objective-c-uitableview","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/9-objective-c-uitableview\/","title":{"rendered":"9. Objective-C: UITableView (parte 1)"},"content":{"rendered":"<p>Quando \u00e8 necessario mostrare una serie di elementi, rendendo possibile la selezione di uno di essi per una successiva &#8220;sotto lista&#8221; da visualizzare, \u00e8 necessario ricorrere all&#8217;oggetto <strong>UITableView<\/strong>. <\/p>\n<p>UITableView \u00e8 responsabile della visualizzazione della lista di elementi a schermo, mentre la navigazione tra le liste di elementi visualizzate viene gestita da UINavigationController. Entrambi gli oggetti cooperano per ottenere l&#8217;effetto tipico delle applicazioni iPhone:<!--more--><\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-01.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-01.jpg\" alt=\"Objective-C-UITableView-01\" title=\"Objective-C-UITableView-01\" width=\"200\" height=\"383\" class=\"aligncenter size-full wp-image-8199\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-01.jpg 200w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-01-156x300.jpg 156w\" sizes=\"auto, (max-width: 200px) 100vw, 200px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Creiamo un nuovo progetto, selezionando come template Window-based Application ed effettuando tutte le operazioni descritte in precedenza per ottenere un&#8217;applicativo base. Aggiungiamo, quindi una nuova classe controllore, denominata: MyTableViewController. Assicuratevi che l&#8217;opzione &#8220;With XIB for userinterface&#8221; sia disabilitata. <\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-02.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-02.jpg\" alt=\"Objective-C-UITableView-02\" title=\"Objective-C-UITableView-02\" width=\"550\" height=\"405\" class=\"aligncenter size-full wp-image-8200\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-02.jpg 550w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-02-300x220.jpg 300w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a><br \/>\n<\/center><\/p>\n<h4>Data Source<\/h4>\n<p>Dal momento che vogliamo mostrare una lista di elementi all&#8217;interno della nostra nuova table view, abbiamo bisogno di una qualche forma di &#8220;sorgente dati&#8221; responsabile del mantenimento dei nostri dati e capace di fornire questi valori alla table view. La sorgente di dati puo&#8217; essere di qualsiasi forma: XML, Databases, Array. Per i nostri esempi, ci baseremo su sorgenti di dati riconducibili alla classe <strong>NSMutableArray<\/strong>. Quest&#8217;ultimo, infatti, puo&#8217; essere riempito con dati provenienti da svariate sorgenti (Internet URL, Databases, XML Files). <\/p>\n<p>La prima cosa da fare e&#8217; costruire una sorgente dati e popolarla con gli elementi che dobbiamo mostrare a schermo. Ci verra&#8217; in aiuto un nuovo metodo, presente in tutte gli oggetti che ereditano da UIViewController: <strong>viewDidLoad<\/strong>. Questo metodo viene invocato non appena la property view della nostra classe viene caricata in memoria. <\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-03.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-03.png\" alt=\"Objective-C-UITableView-03\" title=\"Objective-C-UITableView-03\" width=\"359\" height=\"131\" class=\"aligncenter size-full wp-image-8201\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-03.png 359w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-03-300x109.png 300w\" sizes=\"auto, (max-width: 359px) 100vw, 359px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>L&#8217;array aggiunto tra le variabili di interfaccia verra&#8217; allocato dal metodo anticipato sopra e verra&#8217; distrutto in fase di deallocazione dell&#8217;oggetto. All&#8217;interno del metodo viewDidLoad, inoltre, verranno caricati dei semplici elementi da visualizzare successivamente. <\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-04.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-04.png\" alt=\"Objective-C-UITableView-04\" title=\"Objective-C-UITableView-04\" width=\"315\" height=\"275\" class=\"aligncenter size-full wp-image-8202\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-04.png 315w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-04-300x261.png 300w\" sizes=\"auto, (max-width: 315px) 100vw, 315px\" \/><\/a><br \/>\n<\/center><\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-05.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-05.png\" alt=\"Objective-C-UITableView-05\" title=\"Objective-C-UITableView-05\" width=\"174\" height=\"82\" class=\"aligncenter size-full wp-image-8203\" \/><\/a><br \/>\n<\/center><\/p>\n<h4>Configurare il numero di righe nella nostra tableView<\/h4>\n<p>La prima cosa da fare, visto che stiamo dialogando con un oggetto che deve mostrare un numero prestabilito di elementi, e&#8217; fornire il numero di elementi da mostrare. Quest&#8217;operazione viene effettuata invocando il metodo <strong>tableView:numberOfRowsInSection<\/strong>. Il metodo ritorna un intero che indica il numero di righe (elementi) presenti nella nostra sorgente di dati. Visto che la nostra sorgente di dati e&#8217; un array, possiamo ritornare il numero di elementi presenti nell&#8217;array. <\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-06.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-06.jpg\" alt=\"Objective-C-UITableView-06\" title=\"Objective-C-UITableView-06\" width=\"550\" height=\"90\" class=\"aligncenter size-full wp-image-8204\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-06.jpg 550w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-06-300x49.jpg 300w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>La funzione autogenerata per noi dal template ritorna un intero pari a zero. Questo comportamento verra&#8217; sostituito dalla nostra nuova istruzione che conta il numero di elementi presenti nell&#8217;array creato precedentemente. <\/p>\n<h4>Mostrare i nostri dati<\/h4>\n<p>Adesso e&#8217; possibile mostrare i nostri dati a schermo. La table view conosce il numero di elementi da visualizzare ed abbiamo una sorgente di dati (NSMutableArray) pronta a fornire gli elementi richiesti. Quello che serve, quindi, e&#8217; un metodo che &#8220;chieda&#8221; le informazioni corrette. <\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-07.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-07.png\" alt=\"Objective-C-UITableView-07\" title=\"Objective-C-UITableView-07\" width=\"450\" height=\"199\" class=\"aligncenter size-full wp-image-8205\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-07.png 450w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-07-300x132.png 300w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Quest&#8217;operazione viene effettuata dal metodo <strong>tableView:cellForRowAtIndexPath<\/strong>. Esso viene chiamato n volte; tante quanti sono gli elementi da visualizzare. Ogni volta, viene passato un parametro indexPath diverso. Attraverso il parametro indexPath, possiamo ottenere il numero della riga corrente da visualizzare. Il template genera per noi uno scheletro perfetto per il nostro scopo. L&#8217;unica cosa che dovremo modificare sara&#8217; la riga responsabile della visualizzazione del nostro dato a schermo. <\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-08.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-08.jpg\" alt=\"Objective-C-UITableView-08\" title=\"Objective-C-UITableView-08\" width=\"550\" height=\"218\" class=\"aligncenter size-full wp-image-8206\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-08.jpg 550w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-08-300x118.jpg 300w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a><br \/>\n<\/center><\/p>\n<h4>Creazione di una vista di dettaglio<\/h4>\n<p>Aggiungiamo una classe <strong>UIView<\/strong> al nostro progetto e chiamiamola <strong>DetailView<\/strong>. <\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-09.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-09.jpg\" alt=\"Objective-C-UITableView-09\" title=\"Objective-C-UITableView-09\" width=\"550\" height=\"405\" class=\"aligncenter size-full wp-image-8207\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-09.jpg 550w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-09-300x220.jpg 300w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Aggiungiamo adesso un controllore per questa nuova view e chiamiamolo <strong>DetailViewController<\/strong>. <\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-10.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-10.jpg\" alt=\"Objective-C-UITableView-10\" title=\"Objective-C-UITableView-10\" width=\"550\" height=\"405\" class=\"aligncenter size-full wp-image-8208\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-10.jpg 550w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-10-300x220.jpg 300w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>I dati che verranno mostrati dalla nostra view, dipendono da quelli che abbiamo disponibili e da quelli che vogliamo realmente mostrare all&#8217;utente. Per il nostro esempio, sara&#8217; sufficiente aggiungere un campo di testo, contenente il nome della nazione selezionata. <\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-11.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-11.png\" alt=\"Objective-C-UITableView-11\" title=\"Objective-C-UITableView-11\" width=\"315\" height=\"141\" class=\"aligncenter size-full wp-image-8209\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-11.png 315w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-11-300x134.png 300w\" sizes=\"auto, (max-width: 315px) 100vw, 315px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Nota come la variabile countryName sia stata configurata con un setter ed un getter automatici. Questo ci permettera&#8217; di rendere piu&#8217; agevole (e leggibile) il nostro codice piu&#8217; avanti. <\/p>\n<p>La parte implementativa si occupa semplicemente di inizializzare e mostrare correttamente a schermo l&#8217;oggetto UILabel e la sua UIView relativa. <\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-12.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-12.png\" alt=\"Objective-C-UITableView-12\" title=\"Objective-C-UITableView-12\" width=\"509\" height=\"264\" class=\"aligncenter size-full wp-image-8210\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-12.png 509w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-12-300x155.png 300w\" sizes=\"auto, (max-width: 509px) 100vw, 509px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Il nostro oggetto UIViewController, a sua volta, conterra&#8217; un&#8217;oggetto di tipo DetailView nella sua dichiarazione d&#8217;interfaccia. Anche in questo caso abbiamo creato i metodi di getter e setter in maniera automatica, attraverso l&#8217;utilizzo della coppia @property \/ @synthesize. <\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-13.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-13.png\" alt=\"Objective-C-UITableView-13\" title=\"Objective-C-UITableView-13\" width=\"354\" height=\"166\" class=\"aligncenter size-full wp-image-8211\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-13.png 354w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-13-300x140.png 300w\" sizes=\"auto, (max-width: 354px) 100vw, 354px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>La parte implementativa si preoccupera&#8217; di creare ed inizializzare correttamente il view controller e gli oggetti ad esso legati (UIView). <\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-14.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-14.png\" alt=\"Objective-C-UITableView-14\" title=\"Objective-C-UITableView-14\" width=\"533\" height=\"200\" class=\"aligncenter size-full wp-image-8212\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-14.png 533w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-14-300x112.png 300w\" sizes=\"auto, (max-width: 533px) 100vw, 533px\" \/><\/a><br \/>\n<\/center><\/p>\n<h4>Passaggio di dati<\/h4>\n<p>Per finire, dobbiamo completare il passaggio di dati dalla nostra tableView alla nostra nuova UIViewController e visualizzarne il risultato a schermo. Per fare questo, utilizziamo il metodo <strong>tableView:didSelectRowAtIndexPath<\/strong>. Utilizzando la variabile indexPath, selezioniamo la riga appropriata dalla nostra sorgente di dati (NSMutableArray) e passiamo il risultato alla classe DetailView, per aggiornare il valore della sua variabile countryName. <\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-15.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-15.jpg\" alt=\"Objective-C-UITableView-15\" title=\"Objective-C-UITableView-15\" width=\"550\" height=\"133\" class=\"aligncenter size-full wp-image-8213\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-15.jpg 550w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-15-300x72.jpg 300w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a><br \/>\n<\/center><\/p>\n<h4>Configurazione della view con accessoryType<\/h4>\n<p>Adesso la nostra applicazione permette di visualizzare dei risultati selezionando un elemento dalla nostra tabella. Il fatto di avere dati ulteriori da visualizzare, pero&#8217;, potrebbe non risultare ovvio all&#8217;utente che vede una tabella di valori. E&#8217; possibile aggiungere un&#8217;icona indicante il concetto di dati aggiuntivi ad ognuna delle celle della nostra tabella. Per fare questo, e&#8217; necessario modificare il metodo <strong>tableView:cellForRowAtIndexPath<\/strong> o aggiungere un nuovo metodo chiamato: <strong>tableView:accessoryTypeForRowWithIndexPath<\/strong>. In questo modo, abbiamo la possibilita&#8217; di selezionare (tramite l&#8217;indice indexPath), le celle che hanno bisogno o meno di mostrare dati aggiuntivi. <\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-16.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-16.jpg\" alt=\"Objective-C-UITableView-16\" title=\"Objective-C-UITableView-16\" width=\"550\" height=\"90\" class=\"aligncenter size-full wp-image-8214\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-16.jpg 550w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-16-300x49.jpg 300w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Nota come una delle due linee di return sia commentata. Entrambe le linee sono valide, quello che cambia e&#8217; il valore del DisclosureButton associato. A seconda di quale delle due opzioni utilizziamo, avremo un&#8217;icona o un piccolo segno di spunta ad indicare la presenza di un&#8217;ulteriore vista. <\/p>\n<p>L&#8217;ultima cosa da fare e&#8217; configurare il titolo della NavigationBar, in maniera da rispecchiare il punto di navigazione in cui ci troviamo. Per fare questo, modifichiamo il metodo <strong>loadView<\/strong> della UIViewController che visualizza i dettagli della nostra selezione. <\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-17.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-17.png\" alt=\"Objective-C-UITableView-17\" title=\"Objective-C-UITableView-17\" width=\"535\" height=\"152\" class=\"aligncenter size-full wp-image-8215\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-17.png 535w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/Objective-C-UITableView-17-300x85.png 300w\" sizes=\"auto, (max-width: 535px) 100vw, 535px\" \/><\/a><br \/>\n<\/center><\/p>\n<h4>Riferimenti<\/h4>\n<ul>\n<li><a href=\"http:\/\/developer.apple.com\/library\/ios\/#documentation\/UIKit\/Reference\/UITableView_Class\/Reference\/Reference.html\" target=\"_blank\">iOS Developer Library: UITableView Class Reference<\/a><\/li>\n<li><a href=\"http:\/\/developer.apple.com\/library\/ios\/#documentation\/UIKit\/Reference\/UINavigationController_Class\/Reference\/Reference.html\" target=\"_blank\">iOS Developer Library: UINavigationController Class Reference<\/a><\/li>\n<li><a href=\"http:\/\/developer.apple.com\/library\/ios\/#documentation\/iPhone\/Conceptual\/iPhoneOSProgrammingGuide\/Introduction\/Introduction.html\" target=\"_blank\">iOS Developer Library: iOS Application Programming Guide<\/a><\/li>\n<li><a href=\"http:\/\/developer.apple.com\/library\/ios\/#documentation\/WindowsViews\/Conceptual\/ViewPG_iPhoneOS\/Introduction\/Introduction.html\" target=\"_blank\">iOS Developer Library: View Programming Guide for iOS<\/a><\/li>\n<li><a href=\"http:\/\/www.amazon.it\/gp\/product\/0596154054\/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&#038;tag=de0d-21&#038;linkCode=as2&#038;camp=3370&#038;creative=23322&#038;creativeASIN=0596154054\" target=\"_blank\">iPhone SDK Application Development \u2013 Capitolo 3<\/a><\/li>\n<\/ul>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/banner-allertasoglie-push-tre.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/banner-allertasoglie-push-tre.jpg\" alt=\"banner-allertasoglie-push-tre\" title=\"banner-allertasoglie-push-tre\" width=\"550\" height=\"293\" class=\"aligncenter size-full wp-image-8150\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/banner-allertasoglie-push-tre.jpg 550w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/12\/banner-allertasoglie-push-tre-300x159.jpg 300w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a><br \/>\n<\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quando \u00e8 necessario mostrare una serie di elementi, rendendo possibile la selezione di uno di essi per&#8230;<\/p>\n","protected":false},"author":476,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[605],"tags":[1002,1003,1005,1001,1004,1000,147,27],"class_list":["post-8184","post","type-post","status-publish","format-standard","hentry","category-guida-rapida-alla-programmazione-cocoa-touch","tag-detailview","tag-detailviewcontroller","tag-tableviewaccessorytypeforrowwithindexpath","tag-tableviewcellforrowatindexpath","tag-tableviewdidselectrowatindexpath","tag-tableviewnumberofrowsinsection","tag-uinavigationcontroller","tag-uitableview"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/8184","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\/476"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=8184"}],"version-history":[{"count":11,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/8184\/revisions"}],"predecessor-version":[{"id":8463,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/8184\/revisions\/8463"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=8184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=8184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=8184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}