在WebView中单击链接时加载本地HTML文件

时间:2010-11-18 12:49:16

标签: iphone html cocoa-touch hyperlink uiwebview

我有一个WebView,可以加载这样的本地HTML文件:

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

我想要的是单击test1本地HTML文件中的链接,然后让webView加载test2本地HTML文件。

我该怎么做?

3 个答案:

答案 0 :(得分:6)

不使用加载请求,而是使用- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL方法。

从本地HTML文件中创建NSString,如下所示:

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

然后将其加载到webview中,如下所示:

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

然后在您链接到其他网页的HTML文件中,只需使用他们的文件名,例如<a href="test2.html">Test 2</a>,它就会在同一网页视图中加载页面而不会出现任何问题。

答案 1 :(得分:1)

喜欢常规网页。让测试1中的链接指向test2。

答案 2 :(得分:1)

- (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;
}