【发布时间】:2011-01-31 20:29:50
【问题描述】:
我正在编写一个带有 UIWebView 的 iPhone 应用程序,它应该显示我在应用程序资源文件夹中拥有的各种 html 文件。在 xcode 我的项目概述中,这些 html 文件显示如下:
dirA
|---> index.html
|---> a1.html
|---> a2.html
|---> my.css
|---> dirB
|---> b1.html
|---> b2.html
|---> dirC
|---> c1.html
|---> c2.html
这些资源被添加到项目中:
- 选中“将项目复制到目标组文件夹(如果需要)”。
- 参考类型:默认。
- 文本编码:Unicode (utf-8)。
- 递归地为任何添加的文件夹创建组。
我的 html 中的链接是相对的,这意味着它们看起来像这样:
<a href="a1.html">a1</a>
<a href="a2.html">a2</a>
<a href="dirB/b2.html">b2</a>
<a href="dirC/c1.html">c1</a>
为了在应用启动时显示 index.html,我使用以下代码:
NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSURL *url = [NSURL fileURLWithPath:path];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
这很好用。只要请求的 html 文件直接位于 dirA 下,索引文件中的链接也可以正常工作。如果后面的链接指向子目录中的文件,那么didFailLoadWithError 将捕捉到这种情况并报告请求的文件不存在。
还有,
[webView loadHtmlString:myHtml];
不能成为解决方案的一部分,因为我需要后退和前进按钮才能在我的 Web 视图中工作。
所以问题是:如何在我的资源的子目录中找到指向 html 文件的相对链接?
在过去的几天里,我一直在研究 stackoverflow 和其他管子,试图弄清楚这一点,但我在任何地方都没有找到解决这个确切问题的方法。任何见解都将非常非常感谢!
编辑: 哇哦!我想到了!多么快乐!这是我所做的:
- 重新导入我的资源,选择“为任何添加的文件夹创建文件夹引用”而不是“为任何添加的文件夹递归创建组”。
- 指定资源的根目录,如:
NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"dirA"];
【问题讨论】:
标签: iphone resources uiwebview directory relative-path