load local HTML file when link is clicked in WebView

后端 未结 3 392
醉梦人生
醉梦人生 2021-01-15 23:49

I have a WebView that loads a local HTML file like this:

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] path         


        
相关标签:
3条回答
  • 2021-01-16 00:17

    Like in a regular webpage. Let the link in test 1 point to test2.

    0 讨论(0)
  • 2021-01-16 00:27

    Instead of loading a request, use the - (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL method.

    Create an NSString from the local HTML file like this:

    NSError *error = nil;
    NSString *html = [[NSString alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"test1" ofType:@"html"] encoding:NSUTF8StringEncoding error:&error];
    

    Then load it into the webview, like this:

    [webview loadHTMLString:html baseURL:[NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"test1" ofType:@"html"]]];
    

    Then in your HTML file when you link to other pages, just use their filename, like <a href="test2.html">Test 2</a> and it would load the page in the same webview without any issues.

    0 讨论(0)
  • 2021-01-16 00:34
    - (void)viewDidLoad {
        [super viewDidLoad];
        [webview loadHTMLString:[self htmlString] baseURL:[self baseURL]];
    }
    - (NSURL *)baseURL{
        NSString *htmlpath = [[NSBundle mainBundle] pathForResource:@"webpage" ofType:@"html"];
        return [[[NSURL alloc] initFileURLWithPath:htmlpath] autorelease];
    }
    
    - (NSString *)htmlString{
        NSError *error = nil;
        NSString *html = [[[NSString alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"webpage" ofType:@"html"] 
                                                         encoding:NSUTF8StringEncoding 
                                                            error:&error] autorelease];
        return html;
    }
    
    0 讨论(0)
提交回复
热议问题