Objective-c [For loop] 在 UIWebview 中加载 HTML 并从 JavaScript 函数



我正在为IOS制作一个Objective-c应用程序,我需要能够遍历一堆网页,并使用嵌入式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并将tags添加到您的网络视图中。


实现

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

可选的UIWebView代表功能并放入您的


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


逻辑在这里。
if check现在将基于您将分配的webview.tag,将在for loop内创建 Web 视图。

最新更新