UITableView单元格中的UIWebView

时间:2016-02-15 23:18:10

标签: ios swift uitableview cocoa-touch uiwebview

我需要有动态单元格的UITableView,每个单元格中都应包含UIWebView。

我使用它来显示每个条目的不同来源的iFrame。每个条目都指向不同的链接,每个UIWebView都需要不时更新。还有一些链接可能指向空白页面,我想检查然后删除。

当然,每当用户滚动表格时发送请求并不是一个好主意,所以我希望有一个缓存并使用"刷新所有"更新WebViews。请求。

所以我已经将UIWebView添加到Cell.xib文件,将其链接到Cell类(作为弱)并创建了webViewArray:

var bannerWebViewsArray = [String: bannerWebViewObject]()

它是一种字典数组,其中key(String)是一个条目id(也用作WebView.tag然后在WebView委托方法中使用),bannerWebViewObject是一个带有UIWebView的结构用于深度检查的字段。

因此,当我首先从特定单元格中的webView发送loadRequest时(在cellForRowAtIndexPath中),我将其复制到数组:

cell?.bannerWebView.delegate = self
cell?.bannerWebView.tag = Int(entryId)!
cell?.bannerWebView.loadRequest(NSMutableURLRequest(URL: *some_url*))
bannerWebViewsArray[entry.entryId!]?.bannerWebView = (cell?.bannerWebView)!

之后,如果页面正常,我只需从数组中加载它:

cell?.bannerWebView = bannerWebViewsArray[entry.entryId!]?.bannerWebView

还有很多触发器和检查,以便有时跳过webview,检查加载的页面等。

但是当我滚动表格后来回来时,有时会将一个空的网页视图放入一个单元格中,在更多滚动之后,一些WebViews会消失,而其他WebViews会再次显示。

我试图删除"弱"对于IBOutlet,但它没有帮助。此外,我尝试为每个单元格使用唯一标识符,但不确定这是一个好主意,它也不起作用(网页视图总是空的)

那么在UITableViewCell中使用UIWebViews的最佳做法是什么?是否可以将它们存储在一个数组中,然后在每次用户滚动表时从中加载它?否则对服务器的请求太多

期待您的帮助,并在需要时提供更多信息。

0 个答案:

没有答案