我的表格视图在滚动时起伏不定,当它加载cellForItemAtIndexPath
函数中的每个图像时,我已经通过一些示例进行了搜索,这些是我尝试过的和仍然有同样的问题。UITableView在UITableView上滚动显示URL的图像
所以我有这个
var arrRes = [[String:AnyObject]]()
然后内景做负载我做出Alamofire GET
请求,并与swiftyJSON
我保存JSON文件到上面的字典。
if let resData = swiftyJsonVar["events"].arrayObject {
self.arrRes = resData as! [[String:AnyObject]]
}
self.tableview2.reloadData()
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return arrRes.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("mapCell", forIndexPath: indexPath) as! locationEventsTableViewCell
var dict = arrRes[indexPath.row]
cell.eventTitle.text = dict["eventName"] as? String
let cal = dict["eventStarttime"] as? String
let dateF = NSDateFormatter()
dateF.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
let date:NSDate = dateF.dateFromString(cal!)!
let d = NSDateFormatter()
d.dateFormat = "dd-MM-yyyy HH:mm"
let d1 = d.stringFromDate(date)
cell.eventDate.text = d1
let at = dict["eventStats"]?["attendingCount"] as? Int
let kapa = at?.stringValue
cell.eventAttends.text = kapa
let imageDef : UIImage = UIImage(named: "noimage")!
let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
dispatch_async(dispatch_get_global_queue(priority, 0)) {
if let theImage = dict["eventCoverPicture"] as? String {
let url = NSURL(string: theImage)
if url != nil {
let data = NSData(contentsOfURL: url!)
dispatch_async(dispatch_get_main_queue()) {
cell.eventImage.image = UIImage(data: data!)
}
} else {
cell.eventImage.image = imageDef
}
}
}
return cell
}
所以你可以看到我使用的调度异步函数来获取图像,即使我有和无的它仍然不流畅。
有没有人有关于此的任何解决方案?谢谢!
你说得对。这是一个长期的解决方案,虽然直到我找到如何做到这一点,但至少数据只在开始时加载一次,所以我想以一种好方法。虽然谢谢你的指导! –
如果你不想在本地存储,只是每次加载ViewController时加载它们,你可以使用'UIActivityIndicatorView'向用户显示你正在从服务器加载数据,然后才能正式呈现UITableView。 – ggworean
您认为在图像实际显示在单元格中之前显示一个默认图像(或加载图像)是个不错的主意?我想现在它变得更好了! –