{"id":2145,"date":"2010-02-16T09:00:26","date_gmt":"2010-02-16T08:00:26","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=2145"},"modified":"2014-02-04T13:23:58","modified_gmt":"2014-02-04T12:23:58","slug":"tips002-caricare-il-contenuto-di-un-file-html-locale-in-una-uiwebview","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/tips002-caricare-il-contenuto-di-un-file-html-locale-in-una-uiwebview\/","title":{"rendered":"TIPS#002 &#8211; Caricare il contenuto di un file HTML locale in una UIWebView"},"content":{"rendered":"<p>Nel nostro <a href=\"http:\/\/www.devapp.it\/wordpress\/t008-creiamo-un-browser.html\" target=\"_blank\">ottavo tutorial<\/a> &#8220;Creiamo un Browser&#8221;, abbiamo visto come creare un semplice browser, il quale, non fa altro che caricare una pagina di un sito web in una UIWebView presente nella nostra applicazione. In questo caso, quindi, sfruttiamo delle pagine presenti in rete, con l&#8217;evidente svantaggio di ottenere una pagina vuota, o comunque un errore, in assenza di connettivit\u00e0.<\/p>\n<p>Poniamo invece il caso di aver la necessit\u00e0 di caricare nella nostra app il contenuto di un documento HTML presente <strong>all&#8217;interno della nostra applicazione<\/strong>, in locale quindi. In questo caso non avremmo bisogno di connettivit\u00e0 e la pagina sarebbe <strong>sempre disponibile<\/strong>.<\/p>\n<p>Ma come potremmo sfruttare una pagina in locale? A cosa pu\u00f2 servirci?<!--more--> Certo non ci servir\u00e0 affatto se stiamo progettando e costruendo un Browser alternativo a quello nativo di iPhone. Immaginate invece di voler inserire del testo in un programma. Usando un oggetto di tipo UITextView avremo sicuramente dei limiti ad esempio nella <strong>formattazione del testo<\/strong>. Ecco quindi come potrebbe tornarci utile usare una webView collegata ad una pagina HTML locale, al posto di una semplice casella di testo. In questo caso, infatti, potremmo formattare il nostro testo come meglio crediamo e non solo, essendo di fatto una pagina HTML, potremmo inserire al suo interno tutto quello che vogliamo.<\/p>\n<p>Per fare questo non dobbiamo far altro che dichiarare nel file .h un oggetto di tipo UIWebView, nel nostro caso chiamato &#8220;webView&#8221;, e le sue property, collegarlo eventualmente, via Interface Builder, ad un oggetto UIWebView dell&#8217;interfaccia utente e utilizzare dove meglio crediamo queste poche righe di codice:<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\nNSString *dataFilePath = [[NSBundle mainBundle] pathForResource:@\"nomeFile\" ofType:@\"html\"];\r\nNSURL *url = [NSURL fileURLWithPath:dataFilePath isDirectory:NO];\r\nNSURLRequest *request = [NSURLRequest requestWithURL:url];\r\n[webView loadRequest:request];\r\n<\/pre>\n<p>Abbiamo diviso il codice in pi\u00f9 istruzioni per maggiore chiarezza, nulla ci vieta, per\u00f2, di utilizzarne una unica:<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\n[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@\"nomeFile\" ofType:@\"html\"]isDirectory:NO]]];\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Nel nostro ottavo tutorial &#8220;Creiamo un Browser&#8221;, abbiamo visto come creare un semplice browser, il quale, non&#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":[116,5,106,115],"class_list":["post-2145","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tips-tricks","tag-html","tag-objective-c","tag-tips","tag-uiwebview"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/2145","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=2145"}],"version-history":[{"count":10,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/2145\/revisions"}],"predecessor-version":[{"id":10899,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/2145\/revisions\/10899"}],"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=2145"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=2145"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=2145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}