我在UIWebview
内实施了UITableView
。当我滚动表格视图时,数据会重新加载,并且UIWebview
会有一些闪烁。这是因为每当我滚动表视图时都会重新加载单元格。我可以保存单元格的状态或将UIWebview
的数据保存在NSMutableArray
中以加快加载速度但我无法保存单元格。那么我怎么能一次又一次地保存细胞或防止细胞重新加载。我希望这些单元格只重新加载一次。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("videoCell") as! UITableViewCell
// var height = UIScreen.mainScreen().applicationFrame.size.height
let linksCell = links[indexPath.row].videoLink
let winksCell = links[indexPath.row]
mutArray.insertObject(linksCell!, atIndex: indexPath.row)
println(mutArray)
if let webView = cell.viewWithTag(21) as? UIWebView {
webView.scrollView.scrollEnabled = false
webView.scrollView.bounces = false
var html = "<html><body><iframe src=\"http://www.youtube.com/embed/\(mutArray[indexPath.row])\" width=\"\(videoTable.frame.width - 16)\" height=\"200\" frameborder=\"0\" allowfullscreen></iframe></body></html>"
webView.loadHTMLString(html, baseURL: nil)
// println(linksCell.videoLink)
// println(html)
}
if let videoName = cell.viewWithTag(22) as? UILabel {
videoName.text = winksCell.title
videoName.adjustsFontSizeToFitWidth = true
}
return cell
}
答案 0 :(得分:1)
试试这个:我没有测试过。但试一试:
取代:
let cell = tableView.dequeueReusableCellWithIdentifier("videoCell") as! UITableViewCell
使用
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "videoCell")
答案 1 :(得分:0)
如果您使用的是故事板,则创建一个自定义单元类 并获取带有标识符的单元格
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
YourCustomeCell_Class *cell = (YourCustomeCell_Class *)[tableView dequeueReusableCellWithIdentifier:@"MyCellIndentifier"];
return cell;
}
试试吧。希望它能解决你的问题。