我的表格視圖在滾動時起伏不定,當它加載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
您認爲在圖像實際顯示在單元格中之前顯示一個默認圖像(或加載圖像)是個不錯的主意?我想現在它變得更好了! –