UIImageTableViewCell内的图像不会显示,除非我踢它(点击,拖动,无论移动)

时间:2015-06-03 14:12:26

标签: ios uitableview swift uiimageview

我正在做cs193p斯坦福课程的作业4,Smashtag。 该程序只是从Twitter获取信息并将其呈现在TableView上。我使用ImageViewCell获取URL并从NSData(url)呈现UIImage。并且微调器指示器运行良好,但是当它停止动画时,它确实消失但图像不会显示,除非我触摸屏幕或拖动它以给它踢。踢完后会立即出现图像。为了保持主线程的流畅性,我必须使用异步来远离阻塞主线程,这是什么原因?

import UIKit

class ImageTableViewCell: UITableViewCell {

@IBOutlet weak var imageLabel: UIImageView! {
    didSet {
        if photo != nil {
            imageLabel?.image = photo
        }
    }
}

var photoURL: NSURL? {
    didSet{
        spinner.startAnimating()
        if let url = photoURL {
            dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_USER_INITIATED.value), 0)) {
                let data = NSData(contentsOfURL: url)
                dispatch_async(dispatch_get_main_queue()) {
                    self.spinner.stopAnimating()
                    if data != nil && url == self.photoURL {
                        self.photo = UIImage(data: data!)
                    }
                }
            }
        }
    }
}

var photo: UIImage?{
    didSet{
        if photo != nil {
           imageLabel.image = photo
        }
    }
}

@IBOutlet weak var spinner: UIActivityIndicatorView!

}

它让我很困惑....感谢您的帮助! !

0 个答案:

没有答案