Sto provando a caricare immagini asincrone all'interno della mia cella FriendsTableView (UITableView). Le immagini si caricano bene ma quando farò scorrere la tabella le immagini cambieranno alcune volte e le immagini sbagliate verranno assegnate alle celle sbagliate.Swift Le immagini si trasformano in immagini errate durante lo scorrimento dopo il caricamento asincrono dell'immagine su UITableViewCell
Ho provato tutti i metodi che ho trovato in StackOverflow incluso l'aggiunta di un tag al raw e quindi il controllo ma non ha funzionato. Sto anche verificando la cella che dovrebbe aggiornarsi con indexPath e controllare se la cella esiste. Quindi non ho idea del perché questo sta accadendo.
Ecco il mio codice:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("friendCell", forIndexPath: indexPath) as! FriendTableViewCell
var avatar_url: NSURL
let friend = sortedFriends[indexPath.row]
//Style the cell image to be round
cell.friendAvatar.layer.cornerRadius = 36
cell.friendAvatar.layer.masksToBounds = true
//Load friend photo asyncronisly
avatar_url = NSURL(string: String(friend["friend_photo_url"]))!
if avatar_url != "" {
getDataFromUrl(avatar_url) { (data, response, error) in
dispatch_async(dispatch_get_main_queue()) {() -> Void in
guard let data = data where error == nil else { return }
let thisCell = tableView.cellForRowAtIndexPath(indexPath)
if (thisCell) != nil {
let updateCell = thisCell as! FriendTableViewCell
updateCell.friendAvatar.image = UIImage(data: data)
}
}
}
}
cell.friendNameLabel.text = friend["friend_name"].string
cell.friendHealthPoints.text = String(friend["friend_health_points"])
return cell
}
Ho provato ad usare la libreria AlamofireImage che avrebbe dovuto risolvere anche questo, ma non riuscivo a farlo funzionare, aveva lo stesso effetto sulle immagini. Ti spiego spiegando quali metodi dovrei usare della libreria Kingfisher? – BenNov
Ho aggiunto un codice di esempio per il tuo caso. Questo dovrebbe funzionare bene. –
come stai dichiarando 'imageView'? – BenNov