我最初的计划是使用拆分视图控制器为iPad应用程序提供一个表格视图和旁边的通用视图。然后我意识到我不能使用拆分视图控制器作为子控制器。所以,我一直在尝试使用表视图控制器,到目前为止我已经取得了相当不错的结果。本质上,我使用tableview的标题视图作为我将使用的各种视图的容器,具体取决于选择哪一行。唯一尚未解决的问题是网站的图像在第一次出现时不会显示在UIWebView中。如果我点击另一个显示Web视图的表行,它显示正常。如果我再次点击原来的那个,它也显示得很好。
我先点击哪一个并不重要。它始终是第一个不显示图像的。它不显示图像,而是显示图像文件的名称。
当我尝试使用分割视图控制器时,我没有遇到这个问题。
我应该寻找什么想法?或者我需要做些什么,我一定不能这样做?
如果重要,正在加载的页面只是远程服务器上的缩略图页面,使用Irfanview的HTML缩略图页面生成器创建。
P.S。经过进一步测试后,它实际上是第一个只能按预期工作的演示文稿。首先,我指的是每个应用程序会话的第一个。 UIWebview
显示为表头的子视图。 tableview控制器显示为来自另一个控制器的按钮的弹出窗口,当用户点击图像时,该按钮呈现。即使我关闭所有这些控制器层等,如果我再次实例化它们,UIWebView
也会正确显示。
这表明在开始之前可能会加载一个虚拟UIWebView
,但这似乎很糟糕。
我只收到一次webViewDidStartLoad:
来电,只有一次来电webViewDidFinishLoad:
而没有来电webView:didFailLoadWithError:
。
组装机: 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.
}
}
答案 0 :(得分:0)
我怀疑这与UITableView加载标头并尝试在该过程中分配内存的方式有关,而不是UIWebView本身。无论出于何种原因,UIWebView的加载似乎都在被中断,而UITableView的渲染仍在完成(只是猜测)。
您可能尝试的一件事是通过添加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加载内容两次。我自己也没有测试过,如果没有看到你的实际表加载代码,很难说问题的根源是否在其他地方,但请告诉我这是否有效!