我可以将数据发送到webview吗?

时间:2017-03-09 09:22:40

标签: ios objective-c uiwebview delegates

我在我的应用中创建了webview,

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

 NSString* htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil];

 [webview loadHTMLString:htmlString baseURL: [[NSBundle mainBundle] bundleURL]];

 [self.view addSubview:webview];

现在我想在webview开始加载时向webview发送数据。是否有uiwebview的任何属性?

感谢提前。

1 个答案:

答案 0 :(得分:0)

您必须在UIWebViewDelegate上设置委托UIWebView属性,例如:

webView.delegate = self;

其中self符合UIWebViewDelegate协议并实现回调方法webViewDidStartLoad(检查docs),如果您确实想在Web视图开始加载时执行某些操作。然后,您实现方法:

- (void)webViewDidStartLoad:(UIWebView *)webView {
 //you can do something in here, but DON'T call any loaders of webView's - loadHTML or reload, cause this will result in a loop
}

但我怀疑这会解决您的问题 - 首先,您可能希望在Web视图完成时执行某些操作。第二 - 你能详细说明你的意思:

  

将数据发送到网络视图

免责声明:从iOS 8及更高版本开始,您应该使用WKWebView代替。

编辑:正如评论中所阐明的那样,您希望动态更新html内容。在WKWebView docs中,您可以读到没有选项(即从NSArray动态插入选项到加载的html字符串)。您必须手动更新您的html字符串,然后使用新的更新的html重新加载WKWebView。重新加载整个html只是为了更新一个功能可能不是一个选项,所以更好地存储加载到服务器上的网页并动态更新(当网页更新时使用新选项),通过调用:

[webView reload];