繁体   English   中英

第一次使用UIWebView时图像未加载

[英]Images not loading FIRST time a UIWebView is used

我最初的计划是使用一个拆分视图控制器为iPad应用程序提供一个表格视图和一个通用视图。 然后我意识到我不能将拆分视图控制器用作子控制器。 因此,我一直在尝试使用表视图控制器,到目前为止,我已经获得了不错的结果。 本质上,我将tableview的标题视图用作容器,该容器将根据选择的哪行来使用各种视图。 唯一未解决的问题是网站的图像在第一次显示时不会在UIWebView中显示。 如果我点击另一个显示Web视图的表行,它会显示正常。 而且,如果我再次点击原始的,它也可以正常显示。

我先点击哪一个都没关系。 它始终是第一个不显示图像的人。 它不显示图像,而是显示图像文件的名称。

当我尝试使用拆分视图控制器进行类似操作时,我没有遇到这个问题。

有什么想法我应该寻找吗? 还是我需要做一些我不应该做的事情?

如果重要的话,正在加载的页面就是远程服务器上的缩略图页面,该页面由Irfanview的HTML缩略图页面生成器创建。

PS经过进一步的测试,它实际上只是第一个演示文稿,与预期的效果不同。 首先,我指的是每个应用程序会话的第一个。 UIWebview作为表头的子视图显示。 tableview控制器显示为来自另一个控制器的按钮的弹出窗口,当用户点击图像时显示。 即使我取消了所有这些控制器层,等等,如果再次实例化它们, UIWebView正确显示。

这表明可能在开始之前加载了一个虚拟的UIWebView ,但这似乎很麻烦。

我正好接到一个对webViewDidStartLoad:调用,而正好一个对webViewDidFinishLoad:调用,而没有对webView:didFailLoadWithError:调用。

KLUDGE:kludge起作用。 这里是:

在表视图控制器中,我创建一个布尔属性URLHasBeenRequested并将其在viewDidLoad中设置为NO 然后我要求重新加载:

-(void)webViewDidFinishLoad:(UIWebView *)webView
{
   if (!self.URLHasBeenRequested) {
      //On first pass, try a second request.
      [webView loadRequest:webView.request];
      self.URLHasBeenRequested = YES;//Set this flag so a duplicate request happens only the first time.
   }
}

我怀疑这与UITableView加载标头并在该过程中尝试分配内存的方式有关,而不是与UIWebView本身有关。 无论出于什么原因,在UITableView的渲染仍在完成的过程中,UIWebView的加载似乎正在中断(只是一个猜测)。

您可以尝试做的一件事是,通过添加UIWebView子视图来设置表头,但不要立即调用“ loadRequest”。 例如,您可以等待,直到表的其余可见单元格都已加载,然后最后加载标题视图。 您可以像这样检测何时发生:

-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if([indexPath row] == ((NSIndexPath*)[[tableView indexPathsForVisibleRows] lastObject]).row){
        [webView loadRequest:webView.request];
    }
}

诚然,这也是一个有点笨拙的解决方法,但是至少您没有让UIWebView两次加载内容。 我也没有自己测试过,并且在没有看到您的实际表加载代码的情况下,很难说问题的根源是否在其他地方,但是请告诉我这是否可行!

暂无
暂无

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

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