【问题标题】:ios - printing HTML from a .html file not working in a UIWebViewios - 从 .html 文件打印 HTML 在 UIWebView 中不起作用
【发布时间】:2012-08-14 02:53:24
【问题描述】:

在我将一些 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 未在屏幕上呈现,我做错了什么?

谢谢!

【问题讨论】:

  • 文件系统上的哪里这个文件是?这是使用您的应用程序构建的捆绑资源吗?它是您应用的 DocumentsCaches 目录中的文件吗?请调试您的应用程序。在分配htmlFile 后停止。使用NSLog() 显示htmlFile 的值。然后,越过分配htmlString 的行。 htmlString 的值是多少?是nil吗?我总是建议使用接受它的方法的NSError 参数,并在操作完成后检查它。您正在传递error:nil,如果发生错误,您将无法看到它们。
  • @Nate 我创建了一个新的“组”并将 html 文件放在那里。我不确定这是否意味着它在捆绑资源中。我如何在那里添加它?或者我应该在那里添加它?我对那个文件做的正确的事情是什么?

标签: ios ios5 uiwebview


【解决方案1】:

好的,所以 Groups 只是 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 参数并不意味着指定捆绑资源的相对路径。没有bundlePath 参数的pathForResource:ofType: 版本几乎总是您将使用的版本。一旦安装了您的应用程序,它将在 learn.html 文件所在的任何位置找到它,并返回该文件的完整路径。您实际上不必担心它是如何嵌套的。它只是一个捆绑资源。

试试看。不过,正如我在评论中所建议的,我始终建议利用 error 参数进行调试:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 2016-12-13
    相关资源
    最近更新 更多