Nel nostro ottavo tutorial “Creiamo un Browser”, 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’evidente svantaggio di ottenere una pagina vuota, o comunque un errore, in assenza di connettività.

Poniamo invece il caso di aver la necessità di caricare nella nostra app il contenuto di un documento HTML presente all’interno della nostra applicazione, in locale quindi. In questo caso non avremmo bisogno di connettività e la pagina sarebbe sempre disponibile.

Ma come potremmo sfruttare una pagina in locale? A cosa può servirci? Certo non ci servirà 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 formattazione del testo. 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.

Per fare questo non dobbiamo far altro che dichiarare nel file .h un oggetto di tipo UIWebView, nel nostro caso chiamato “webView”, e le sue property, collegarlo eventualmente, via Interface Builder, ad un oggetto UIWebView dell’interfaccia utente e utilizzare dove meglio crediamo queste poche righe di codice:

NSString *dataFilePath = [[NSBundle mainBundle] pathForResource:@"nomeFile" ofType:@"html"];
NSURL *url = [NSURL fileURLWithPath:dataFilePath isDirectory:NO];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];

Abbiamo diviso il codice in più istruzioni per maggiore chiarezza, nulla ci vieta, però, di utilizzarne una unica:

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"nomeFile" ofType:@"html"]isDirectory:NO]]];