OS X Web View应用程序 - 不会加载本地.html网页

时间:2013-02-12 01:19:49

标签: objective-c cocoa webview

我在AppDelegate.m文件中有以下代码,该文件在我打开应用程序时打开Goog​​le。我正在尝试更改它以打开我复制到我的Xcode项目中的.HTML网页,但它无法正常工作。我正在使用Xcode 4.5.2。

用于打开Goog​​le的代码是:

@implementation MDAppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]];
    [self.webView.mainFrame loadRequest:request];
}

我尝试将其更改为(因此它会加载我放在项目文件夹中的test.html文件,但应用程序现在只显示空白)。我错过了什么?

@implementation MDAppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"test.html"]];
    [self.webView.mainFrame loadRequest:request];
}

3 个答案:

答案 0 :(得分:2)

只要您的test.html被复制到项目的根目录(确保它也被复制到您的最终应用程序包中,嗯? - 检查构建阶段)您可以加载它使用以下代码编写Web视图:

NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"html"];
NSURL* fileURL = [NSURL fileURLWithPath:path];
NSURLRequest* request = [NSURLRequest requestWithURL:fileURL];
[self.webView.mainFrame loadRequest:request];

答案 1 :(得分:1)

[NSURL URLWithString:@"test.html"]未创建文件的有效网址。试试这个:(它来自iOS项目,但也应该适用于OS X应用程序)。我使用loadHTMLString:baseURL:代替loadRequest:

NSString* fileName = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"html"];
NSString* htmlString = [NSString stringWithContentsOfFile:fileName encoding:NSUTF8StringEncoding error:NULL];
NSURL *baseURL = [[NSBundle mainBundle] bundleURL];
[self.webView loadHTMLString:htmlString baseURL:baseURL];

答案 2 :(得分:0)

[NSURL URLWithString:@"test.html"]

有你的问题。假设您的test.html文件位于应用程序包的资源文件夹中,请执行以下操作:

[[NSBundle mainBundle] URLForResource:@"test" withExtension:@"html"];

NSBundle还有一些其他方法可以轻松创建URL,以防上面的URL不合适(如果文件位于子目录中)。有关详细信息,请查看NSBundle reference page