Refresh d'une UITableViewCell
Hello,
J'ai quelques soucis pour refresh une UITableviewcell.
Dans le cellForRowAt j'applique une configuration spécifique à ma cellule (application d'un style bold par endroit, border et ajout d'un badge pour certaines images). Le soucis étant que le style n'est appliqué qu'après un scroll...
J'ai pensé à un problème de réutilisation de cellule, ou à un refresh avec cell.layoutIfNeeded(), mais sans succès.
Voici un bout de code de mon :
let cell = tableView.dequeueReusableCell(withIdentifier: "meCell", for: indexPath) as! MyCellClass
if let notification = self.currentRecommendations()?[(indexPath as NSIndexPath).row] as? GFNotificationResult {
cell.configure(withNotification: notification)
}
cell.layoutIfNeeded()
return cell
Si quelqu'un à déjà eu le soucis je suis preneur !
Bonne journée
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Qu'est-ce tu as comme code dans la cellule ?
msg.attributedStringWithBold() -> Renvoie un attributedString avec la conversion en bold pour les champs spécifié, c'est ce bold qui n'est affiché qu'après scroll...
self.avatarImageView?.setCertifiedStyle() -> Applique un border style différent + un logo certifié sur l'image via un addsubview. C'est ce logo qui n'est affiché qu'après scroll...
Et tu reçois la notification où ?
Ton code dans tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) ne sera appelé que si tu appelles tableView.reloadData.
Il vaut mieux de recevoir la notification dans la cellule.
Les notifications sont reçues d'un web service, une fois le parse effectué, je set un tableau de notification, qui possède :
Avec reloadTableView() qui effectue un reloadData sur la MainQueue
Impossible donc de recevoir la notification directement dans la cellule
La configuration se faisant dans le cellForRowAt en synchrone je ne comprend pas pourquoi cela n'apparait pas...
Les notifications, elles sont pour tous les cellules en même temps, ou pour une cellule seulement ?
Toutes les cellules en même temps.
Un refresh -> je récupère et parse/reload toutes les notifications !
Merci pour ton aide
OK. Et tu as mis un breakpoint dans le code pour vérifier s'il execute ou non ?
Oui le code est bien exécuté...
Je vais essayer en mettant un flag dans ma cellule et en exécutant le code dans le layoutSubviews() peut être ?
J'ai résolu le problème pour le bold.
J'appliquais au démarrage un style globale a mes label :
Une fois ces deux lignes en commentaires le bold s'est affiché sans avoir besoin de scroll...
Reste le soucis du badge rajouté aux UIImageView qui ne s'affiche qu'après scroll !