ios - 从不在UIWebView中工作的.html文件打印HTML

时间:2012-08-14 02:53:24

标签: ios ios5 uiwebview

在我将一些html硬编码到我的UIWebView函数后,我得到了“hello world”文本,但现在我正在尝试将该HTML移动到文件系统上其他位置的文件中,并且它不会呈现。

这就是我所拥有的:

- (void)viewDidAppear:(BOOL)animated
{   
    NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"learn" ofType:@"html" inDirectory:@"src/html_files"];

    NSString* htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil];
    [theWebView loadHTMLString:htmlString baseURL:nil];
}

我的HTML文件位于我创建的名为src / html_files的目录中,该文件名为learn.html

我错误地认为HTML没有在屏幕上呈现?

谢谢!

1 个答案:

答案 0 :(得分:1)

好的,所以群组只是Xcode中的一个构造,用于保持应用资源的有序性。虽然Xcode使用小文件夹图标,但并不一定意味着它们实际上是(Mac或iOS)文件系统上的单独文件夹。

但是,听起来您已将该文件添加为捆绑资源。这就是你发布的代码也是如此,但我不得不问,确定。

最有可能的是,唯一不对的是:

NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"learn" 
                                                     ofType:@"html" 
                                                inDirectory:@"src/html_files"];

应该是这样的:

NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"learn" 
                                                     ofType:@"html"];

来自the Apple documentation for NSBundle

+ (NSString *)pathForResource:(NSString *)name 
                       ofType:(NSString *)extension 
                  inDirectory:(NSString *)bundlePath
  

bundlePath

     

顶级捆绑目录的路径。这必须是有效的路径。例如,到   指定Mac应用程序的软件包目录,您可以指定路径/​​Applications/MyApp.app。

bundlePath参数并不是指定捆绑资源的相对路径。没有pathForResource:ofType:参数的bundlePath版本几乎总是您将使用的版本。安装完应用后,它会在任何位置找到 learn.html 文件,并返回完整路径。你真的不必担心它是如何嵌套的。它只是一个捆绑资源。

试一试。正如我在评论中所建议的那样,我总是建议利用error参数进行调试:

NSError* error;
NSString* htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error: &error];
if (error != nil) {
    NSLog(@"Error with stringWithContentsOfFile: %@", [error localizedDescription]);
}