Ich habe ein Problem im Zellbild. Ich beschreibe es im Nachhinein.
Ein Bildschirm mit einer Tabelle mit 1000 Zellen.
Jede Zelle besteht aus a) Bild b) Etiketten.
Die Bild- und Etikettendaten stammen von json.
Mit Hilfe von AFNetwork ich JSON Geldbörse und binden Sie Etikett und Bild. Das Problem ist im Bild. Die Etiketten sind perfekt bindbar. Von json kommt auch die Bild-URL korrekt. Zeigen Sie jedoch vorherige Zellenbilder an, wenn das Scrollen gestartet wird. 1. Mal beim Scrollen nicht starten alle Bilder werden perfekt angezeigt. Aber nach dem Scrollen Problem starten und zeigen vorherige Zelle Bild.Nach dem Scrollen Tabellenzelle Bild zeigen vorherige Bilder in swift. Obwohl die Bild-URL korrekt angezeigt
Code:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if self.arrPostImage![indexPath.row] as! String == ""
{
let cell1: CellNewNoImage = tableView.dequeueReusableCellWithIdentifier("cell2") as! CellNewNoImage
return cell1
}
else
{
let cell1: CellForMyActivityMainTableView = tableView.dequeueReusableCellWithIdentifier("cell") as! CellForMyActivityMainTableView
cell1.title.text = self.arrTitle![indexPath.row] as? String
cell1.postDate.text = self.arrPostDate![indexPath.row] as? String
cell1.postDescription.text = self.arrPostDescription![indexPath.row] as? String
//=========== Problem Start ====================
self.arrPostPersonImg![indexPath.row] = self.arrPostPersonImg![indexPath.row].stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!
let imgPath = self.arrPostPersonImg![indexPath.row]
let url12 = NSURL(string:imgPath as! String)
getDataFromUrl(url12!) { (data, response, error) in
dispatch_async(dispatch_get_main_queue()) {() -> Void in
guard let data = data where error == nil else { return }
cell1.postPersonImg.image = UIImage(data: data)
}
}
self.arrPostImage![indexPath.row] = self.arrPostImage![indexPath.row].stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!
let imgPath2 = self.arrPostImage![indexPath.row]
let url122 = NSURL(string:imgPath2 as! String)
if let url = NSURL(string:imgPath2 as! String) {
if let data = NSData(contentsOfURL: url) {
cell1.postImage.image = UIImage(data: data)
}
}
return cell1
}
}
func getDataFromUrl(url:NSURL, completion: ((data: NSData?, response: NSURLResponse?, error: NSError?) -> Void))
{
NSURLSession.sharedSession().dataTaskWithURL(url)
{ (data, response, error) in
completion(data: data, response: response, error: error)
}.resume()
}
Sie möchten vielleicht einen Blick auf http://stackoverflow.com/questions/12381991/ios-cache-policy –