Search code examples
iosobjective-ciphonecocoa-touchuiwebview

How to load local html file into UIWebView


I'm trying to load a html file into my UIWebView but it won't work. Here's the stage: I have a folder called html_files in my project. Then I created a webView in interface builder and assigned an outlet to it in the viewController. This is the code I'm using to append the html file:

-(void)viewDidLoad
{
    NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"html" inDirectory:@"html_files"];
    NSData *htmlData = [NSData dataWithContentsOfFile:htmlFile];
    [webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]];
    [super viewDidLoad];
}

That won't work and the UIWebView is blank. I'd appreciate some help.


Solution

  • probably it is better to use NSString and load html document as follows:

    Objective-C

    NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"html"];
    NSString* htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil];
    [webView loadHTMLString:htmlString baseURL: [[NSBundle mainBundle] bundleURL]];
    

    Swift

    let htmlFile = NSBundle.mainBundle().pathForResource("fileName", ofType: "html")
    let html = try? String(contentsOfFile: htmlFile!, encoding: NSUTF8StringEncoding)
    webView.loadHTMLString(html!, baseURL: nil) 
    

    Swift 3 has few changes:

    let htmlFile = Bundle.main.path(forResource: "intro", ofType: "html")
    let html = try? String(contentsOfFile: htmlFile!, encoding: String.Encoding.utf8)
    webView.loadHTMLString(html!, baseURL: nil)
    

    Did you try?

    Also check that the resource was found by pathForResource:ofType:inDirectory call.