0

我正在将本地 HTML 加载到 UIWebView 中,如下所示:

- (void)viewDidLoad
{
[super viewDidLoad];

//Setup our UIWebView
webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
webView.delegate = self;
webView.scalesPageToFit = YES;
webView.userInteractionEnabled = YES;
[self.view addSubview:webView];
...
[self loadWebPage];
}

- (void)loadWebPage {

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]];
[webView loadRequest:[NSURLRequest requestWithURL:url]];
 }

在标题中:

@interface ViewController : UIViewController <UIWebViewDelegate>

但是由于某种原因,我的 webview 代表没有被调用:

- (void)webViewDidStartLoad:(UIWebView *)webView {
NSLog(@"Starting HTML Load Process");
}

- (void)webViewDidFinishLoad:(UIWebView *)webViewRef {
NSLog(@"Web View Finished Loading Method");
}

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
NSLog(@"Error loading HTML ! %@", error);
}

谁能建议为什么?

谢谢 !

4

5 回答 5

1

调用方法[self loadWeb];

但根据定义,该方法是 - (void)loadWebPage;

是错字吗?

于 2013-08-30T10:27:32.743 回答
0

问题是这个调用。

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]];

看起来您正在从捆绑包中加载 HTML。这意味着您需要确认所有其他文件(.js, .css, and any media files)也需要存在于您的捆绑包中。

所以首先需要检查fileURLWithPath:指出它是否返回 nil。如果不是,则表示 .html 页面已解析,但是附加文件未作为请求的一部分解析,因为它未放置在相同的“index.html”路径上。

首先,您需要确认“index.html”的目录结构以及页面内使用的所有附加文件。为此,您必须在查找器的“构建”目录中右键单击二进制 .app,然后选择“显示包内容”。

二进制(.app)>右键单击>显示包内容

这显示了应用程序的主包包含的内容。在里面查找您的 HTML 文件。如果它在文件夹中,则该文件夹名称需要在调用的inDirectory参数中pathForResource。如果它在顶层,那么您没有文件夹引用。删除并重新将其拖到项目中或使用pathForResource不带inDirectory.

最好不要为 .html 页面(.js、.css 和图像)内的资源设置基本路径或相对路径,因为它不起作用。复制“index.html”文件旁边的所有附加资源,以便在运行时从捆绑包中轻松解析。

NSString *path = @"<Index.html Path>";

NSURL *url = [NSURL URLWithString: [path lastPathComponent] 
             relativeToURL: [NSURL fileURLWithPath: [path stringByDeletingLastPathComponent] 
                                       isDirectory: YES]];
于 2013-08-30T11:53:25.783 回答
0

Try this

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]isDirectory:NO];
于 2013-08-30T12:08:22.543 回答
0

我可以重现的唯一方法是通过将webView@property 声明为弱。您能否确认您将其声明为强参考?

于 2013-08-30T11:20:27.677 回答
0

你是如何将你的UIWebView实例变量声明为强或弱的?弱则强。

于 2013-08-30T10:23:20.800 回答