在Objective C中,我想显示一个使用UIWebView构建的网站。
简要概述:我有一个包含index.html的文件夹。在该文件夹中,有一个“img”文件夹和一个“js”文件夹。 js文件夹中有许多.js文件。 img文件夹有很多图像。我可以独立运行页面(在xcode之外)没问题。
现在我能够创建一个非常基本的html文件,将它存储在与我的所有.h和.m文件相同的目录中,并使其正确显示。我现在的目标是显示我的网站与子目录,如上所述。
这是我到目前为止所得到的:
xcode的:
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *path = [[NSBundle mainBundle] path:@"index" ofType:@"html"];
NSLog(path);
NSString *content = [NSString stringWithContentsOfFile:path encoding:NSASCIIStringEncoding error:nil];
NSURL *baseURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
[self.webView loadHTMLString:content baseURL:baseURL];
}
以下是我的文件结构:
当我运行它时,构建成功。但没有显示任何内容。另外,我可以检查一下 “问题导航器”选项卡(在左侧导航器上)查看问题列表。我注意到,对于我在game.html文件中包含的每个.js文件,都存在问题。他们都说基本相同的事情:
依赖关系分析警告:警告:没有处理文件的规则 '$(PROJECT_DIR)/Web/gameFolder/js/input/MouseInputHandler.js'的类型 用于架构i386的sourcecode.javascript
那我该怎么办?
谢谢:Captainlonate
答案 0 :(得分:4)
*Dependency Analysis Warning: warning: no rule to process file '$(PROJECT_DIR)/Web/gameFolder/js/input/MouseInputHandler.js' of type sourcecode.javascript for architecture i386*
将html相关文件添加到项目后,* .js文件被添加到“构建阶段”的“编译源”列表中。所以编译器试图编译它们,但他不能,因此警告(加上它们并没有真正被复制到包中)。这种默认行为曾经让我感到好几分钟的愤怒......
从此列表中删除它们(* .js文件)并添加到“复制包资源”
另一件事是 - 在捆绑中,所有资源的层次结构都变得“扁平化”。我的意思是,如果你有这样的文件:
index.html
js/lib/jquery.js
img/circle.png
你可能做过像这样的事情
<img src="img/circle.png">
但它不适用于webview。你必须引用同样的文件:
<img src="circle.png">
因为webview以这种方式查看捆绑包中的文件:
index.html
jquery.js
circle.png
还有一件事 - 您通过将HTML文件作为字符串加载来加载Web内容,然后将其传递给webview。这并不是很糟糕,但我相信使用其他方法会更好一些:
NSBundle* mainBundle = [NSBundle mainBundle];
NSString* path = [mainBundle pathForResource: @"index" ofType: @"html"];
NSURL* url = [NSURL fileURLWithPath: path];
NSURLRequest* req = [NSURLRequest requestWithURL: url];
[webview loadRequest: req];