ios-在滚动时防止在UITableView中重新加载单元格

时间:2015-09-08 06:58:28

标签: ios objective-c swift uitableview webview

我在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

}

2 个答案:

答案 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; 
}

试试吧。希望它能解决你的问题。