-1

在 Objective C 中,我想显示一个使用 UIWebView 构建的网站。

简要概述:我有一个包含 index.html 的文件夹。在该文件夹内,有一个“img”文件夹和一个“js”文件夹。js 文件夹有许多 .js 文件。img 文件夹有许多图像。我可以独立运行页面(在 xcode 之外)没问题。

现在我能够创建一个非常基本的 html 文件,将它存储在与所有 .h 和 .m 文件相同的目录中,并让它正确显示。我现在的目标是显示我的网站和上面刚刚解释的子目录。

这是我到目前为止所得到的:

x代码:

- (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 文件,都有一个问题。他们都说基本相同的事情:

依赖性分析警告:警告:没有规则来处理架构 i386 的 sourcecode.javascript 类型的文件 '$(PROJECT_DIR)/Web/gameFolder/js/input/MouseInputHandler.js'

那么我能做什么呢?

谢谢:队长

4

1 回答 1

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];
于 2013-04-19T22:55:18.853 回答