{"id":10892,"date":"2014-02-04T14:24:21","date_gmt":"2014-02-04T13:24:21","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=10892"},"modified":"2014-02-04T14:24:21","modified_gmt":"2014-02-04T13:24:21","slug":"uirefreshcontrol-aggiungere-il-pull-down-to-refresh-ai-table-view-controller-senza-usare-librerie-esterne","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/uirefreshcontrol-aggiungere-il-pull-down-to-refresh-ai-table-view-controller-senza-usare-librerie-esterne\/","title":{"rendered":"UIRefreshControl: aggiungere il Pull Down To Refresh ai Table View Controller senza usare librerie esterne"},"content":{"rendered":"<p>Forse non tutti sanno che per aggiungere la funzionalit\u00e0 di refresh dei dati ad un table view controller tramite il sistema <strong>Pull Down To Refresh<\/strong>, non occorre pi\u00f9 necessariamente creare tutto da zero o usare codice di terzi, almeno non pi\u00f9 dalla versione 6 dell&#8217;iOS SDK. Da questa versione, infatti, \u00e8 presente il nuovo componente <strong>Refresh Control<\/strong>, ispirato probabilmente alle prime app che hanno deciso di sostituire i vecchi button di aggiornamento, integrando al loro posto questo sistema sicuramente pi\u00f9 gradevole e intuitivo.<\/p>\n<p><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2014\/02\/UIRefreshControl-iOS-SDK-6-devAPP.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2014\/02\/UIRefreshControl-iOS-SDK-6-devAPP.jpg\" alt=\"UIRefreshControl-iOS-SDK-6-devAPP\" width=\"642\" height=\"336\" class=\"aligncenter size-full wp-image-10893\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2014\/02\/UIRefreshControl-iOS-SDK-6-devAPP.jpg 642w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2014\/02\/UIRefreshControl-iOS-SDK-6-devAPP-300x157.jpg 300w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2014\/02\/UIRefreshControl-iOS-SDK-6-devAPP-500x261.jpg 500w\" sizes=\"auto, (max-width: 642px) 100vw, 642px\" \/><\/a><\/p>\n<h1>Aggiungere il Pull Down To Refresh tramite UIRefreshControl<\/h1>\n<p>Vediamo brevemente come fare. Create un progetto contenente un table view controller (per questo vi rimando ai tutorial di devAPP o a quelli che potete trovare in rete).<br \/>\nNel file di intestazione (.h) aggiungete la property e il metodo seguenti:<\/p>\n<pre lang=\"objc\" line=\"1\" escaped=\"true\">\r\n@property (strong, nonatomic) UIRefreshControl *refreshControl;\r\n- (void) refreshData;\r\n<\/pre>\n<p>Il metodo si occuper\u00e0 di aggiornare i dati e di mostrarli nella tabella (tramite reloadData). Mentre alla property assoceremo un&#8217;istanza di UIRefreshControl. Apriamo quindi il file di implementazione (.m) e modifichiamo il metodo <em>initWithStyle:<\/em> come segue:<\/p>\n<pre lang=\"objc\" line=\"1\" escaped=\"true\">\r\n- (id)initWithStyle:(UITableViewStyle)style\r\n{\r\n    self = [super initWithStyle:style];\r\n    if (self) {\r\n        \/\/ Custom initialization\r\n        \r\n        \/\/ Refresh control\r\n        self.refreshControl = [[UIRefreshControl alloc] init];\r\n        [self.refreshControl addTarget:self\r\n                                action:@selector(refreshData)\r\n                      forControlEvents:UIControlEventValueChanged];\r\n    }\r\n    return self;\r\n}\r\n<\/pre>\n<p>Come vedete niente di complicato, inviando il messaggio <em>addTarget:action:forControlEvents:<\/em> al refresh control, verr\u00e0 chiamato il metodo <em>refreshData<\/em> (quando l&#8217;utente effettuer\u00e0 un pull down della tabella) che aggiorner\u00e0 e mostrer\u00e0 i nuovi dati nella stessa.<\/p>\n<p>Implementiamo quindi il metodo <em>refreshData<\/em>:<\/p>\n<pre lang=\"objc\" line=\"1\" escaped=\"true\">\r\n-(void)refreshData{\r\n    \/\/ Recuperate i vostri dati aggiornati\r\n\r\n    [self.refreshControl endRefreshing];\r\n    [self.tableView reloadData];\r\n}\r\n<\/pre>\n<p>Non dimenticate di inviare il messaggio <strong>endRefreshing<\/strong> al refresh control o questo rimarr\u00e0 in stato di aggiornamento a tempo indeterminato e mostrer\u00e0 perennemente la vista designata per rappresentare il refresh dei dati.<\/p>\n<p>Per maggiori info: <a href=\"https:\/\/developer.apple.com\/library\/ios\/documentation\/UIKit\/Reference\/UIRefreshControl_class\/Reference\/Reference.html\" target=\"_blank\">UIRefreshControl Class Reference<\/a><\/p>\n<p>Semplice, vero?<br \/>\nSpero vi sia utile.<br \/>\nAlla prossima.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Forse non tutti sanno che per aggiungere la funzionalit\u00e0 di refresh dei dati ad un table view&#8230;<\/p>\n","protected":false},"author":1,"featured_media":10898,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[105],"tags":[1344,917,626,1336,1343],"class_list":["post-10892","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tips-tricks","tag-iosdevs","tag-mobile-developers","tag-pull-down-to-refresh","tag-tips-tricks-ios-developer","tag-uirefreshcontrol-ios"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/10892","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\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=10892"}],"version-history":[{"count":6,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/10892\/revisions"}],"predecessor-version":[{"id":10907,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/10892\/revisions\/10907"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media\/10898"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=10892"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=10892"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=10892"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}