表格视图与图像口吃同时滚动

时间:2016-09-17 09:10:37

标签: ios swift uitableview nscache

我有一个表视图,可以加载自定义表视图单元格。在表格视图单元格中,我有一个图像视图,以及其他控件。问题是表格视图在滚动时断断续续,即使从Cache或文档目录中读取图像(使用其中任何一个都没有任何区别)

以下是显示表格视图单元格的代码:

func tableView(tableView: UITableView,
               willDisplayCell cell: UITableViewCell,
                               forRowAtIndexPath indexPath: NSIndexPath) {

if cell.isKindOfClass(EventsTableViewCell) {

    let eventCell = cell as! EventsTableViewCell

    let list = self.eventsList

    if list.count > 0 {

        let event = list.objectAtIndex(indexPath.row) as! Event


//other cell labels configured here

        //imageCache is NSCache instance
        if let imageData = self.imageCache.objectForKey(event.name) as? NSData {

            let image = UIImage(data: imageData)

            eventCell.eventImageView.image = image
        }
        else if event.imageUrl != "" {

            eventCell.setImageToCell(event)
        }


    }

}

}

func tableView(tableView: UITableView,
               cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

let cellIdentifier = "eventCell"

var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier)

if cell == nil {

    let nibCollection = NSBundle.mainBundle().loadNibNamed("EventsTableViewCell",
                                                           owner: nil,
                                                           options: nil)

    cell = (nibCollection as NSArray).objectAtIndex(0) as? EventsTableViewCell
}

cell?.selectionStyle = .None

return cell!
}

EventsTableViewCell

func setImageToCell(event: Event) {

        //apply placeholder image. This image will be replaced if an image is found for the particular event.

        if event.image != nil {

            dispatch_async(dispatch_get_main_queue(), {

                    self.eventImageView.image = event.image
            })
        }
}

因此,即使这里没有下载任何图像,表格视图仍然无法正确处理滚动。我不确定我做错了什么。图像的大小可以成为问题吗?

0 个答案:

没有答案