繁体   English   中英

Objective-c [For循环]在UIWebview中加载HTML并从JavaScript函数检索数据

[英]Objective-c [For loop] load HTML in UIWebview and retrieve data from JavaScript function

我正在用Objective-c for IOS开发一个应用程序,我需要能够循环浏览一堆网页,并使用嵌入式javascript函数返回一些JSON值。

我在应用程序的其他地方使用了这些页面,并且javascript可以按要求工作。 在这一点上,我确实存储了JSON响应,但是由于用户可能无法查看每个页面,因此该应用不一定要检查所有JSON值。

下面的代码部分是我用来遍历所有页面,加载HTML字符串并运行javascript函数的内容。 问题在于这些值始终返回为空。

-(void)webViewDidFinishLoad:(UIWebView *)webView {
    NSLog(@"finished loading");
    NSString *jsonValues = [webView stringByEvaluatingJavaScriptFromString:@"getFields()"];
}

for (int i = 1; i <= shifts; i++)
    {
        ontracMultipleWevViewController *RT9909 = [viewControllerDictionary objectForKey:[NSString stringWithFormat:@"Shift %d RT9909", i]];
        if (RT9909 && [RT9909.viewControllers count] > 0) {
            for (ontracRTViewController *r9909 in RT9909.viewControllers) {

                 UIWebView *webView = [[UIWebView alloc] init];
                 [webView setDelegate: self];
                 [webView loadHTMLString:r9909.htmlString baseURL:[NSURL URLWithString:r9909.urlToLoad]];
                [self webViewDidFinishLoad:webView];
                [self.view addSubview:webView];

                if([self webViewDidFinishLoad:webView]){
                    r9909.jsonValues = [webView stringByEvaluatingJavaScriptFromString:@"getFields()"];

                   if(r9909.jsonValues != nil && ![r9909.jsonValues isEqualToString:@""] && rt9909ShiftCount == 0){

                   ........rest of code

注意:我没有错误或NSLogs提示任何问题

您需要隔离

if([self webViewDidFinishLoad:webView]){
    r9909.jsonValues = [webView stringByEvaluatingJavaScriptFromString:@"getFields()"];

阻止for-loop并向您的webview添加tags


实施

- (void)webViewDidFinishLoad:(UIWebView *)webView;

UIWebView可选委托函数并放入您的


if(...) {
      r9909.jsonValues = [webView stringByEvaluatingJavaScriptFromString:@"getFields()"];
 }


逻辑在这里。
if check现在将基于该webview.tag ,你将分配会产生内部的网页视图for loop

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM