【问题标题】:OS X Web View App - Won't Load Local .html Web PageOS X Web View App - 不会加载本地 .html 网页
【发布时间】:2013-02-12 01:19:48
【问题描述】:

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

打开谷歌的代码是:

@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];
}

【问题讨论】:

    标签: objective-c cocoa webview


    【解决方案1】:

    只要将您的 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];
    

    【讨论】:

    • @user1822824 很高兴能帮上忙! ;-)
    • 有没有一种简单的方法可以为网页视图启用本地存储?
    • @user1822824 本地存储是什么意思?
    【解决方案2】:

    [NSURL URLWithString:@"test.html"] 没有为您的文件创建有效的 URL。试试看:(它来自一个 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];
    

    【讨论】:

    • 如果将 test.html 复制到我的项目的根目录,我将如何引用它?
    • 我不明白你的意思?您包含的代码如何引用 test.html?还是除了我拥有的代码之外,我还要添加您包含的代码吗?
    • 好吧,因为这是我的代码,它引用了error.html。如果这样更清楚,我会将其更改为使用 test.html。
    【解决方案3】:
    [NSURL URLWithString:@"test.html"]
    

    你的问题。假设您的 test.html 文件位于应用程序包的资源文件夹中,请改为:

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

    NSBundle 还有一些其他方法可以轻松创建 URL,以防上面的方法不合适(比如文件在子目录中)。请查看NSBundle reference page 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-28
      相关资源
      最近更新 更多