J'ai une coutume UITableView
utilisant UITableViewCell
s. Chacun UITableViewCell
a 2 boutons. Cliquer sur ces boutons changera une image dans une UIImageView
dans la cellule.
Est-il possible de rafraîchir chaque cellule séparément pour afficher la nouvelle image? Toute aide est appréciée.
objective-c
uitableview
Assistant d'iOS
la source
la source
[NSArray arrayWithObject:]
place.beginUpdates
etendUpdates
sont inutiles.J'ai essayé d'appeler
-[UITableView cellForRowAtIndexPath:]
, mais cela n'a pas fonctionné. Mais, ce qui suit fonctionne pour moi par exemple. Ialloc
etrelease
leNSArray
pour une gestion serrée de la mémoire.la source
Rapide:
la source
reloadRowsAtIndexPaths:
est bien, mais forcera toujours lesUITableViewDelegate
méthodes à tirer.L'approche la plus simple que je puisse imaginer est:
Il est important d'appeler votre
configureCell:
implémentation sur le thread principal, car cela ne fonctionnera pas sur un thread non-UI (la même histoire avecreloadData
/reloadRowsAtIndexPaths:
). Parfois, il peut être utile d'ajouter:Il vaut également la peine d'éviter tout travail qui serait effectué en dehors de la vue actuellement visible:
la source
Si vous utilisez des TableViewCells personnalisées, le générique
ne répond pas efficacement à cette question sauf si vous quittez la vue actuelle et y revenez. La première réponse non plus.
Pour recharger correctement votre première cellule de vue de tableau sans changer de vue , utilisez le code suivant:
Insérez la méthode d'actualisation suivante qui appelle la méthode ci-dessus afin que vous puissiez recharger uniquement la cellule supérieure (ou la vue de tableau entière si vous le souhaitez):
Maintenant que vous avez trié, à l'intérieur de votre
viewDidLoad
ajoutez ce qui suit:Vous disposez désormais d'une fonction de table d'actualisation personnalisée qui rechargera la cellule supérieure. Pour recharger la table entière, ajoutez le
[self.tableView reloadData];
à votre nouvelle méthode d'actualisation.Si vous souhaitez recharger les données à chaque fois que vous changez de vue, implémentez la méthode:
la source
Swift 3:
la source
Juste pour mettre à jour légèrement ces réponses avec la nouvelle syntaxe littérale dans iOS 6 - vous pouvez utiliser Paths = @ [indexPath] pour un seul objet ou Paths = @ [indexPath1, indexPath2, ...] pour plusieurs objets.
Personnellement, j'ai trouvé que la syntaxe littérale des tableaux et des dictionnaires était extrêmement utile et économisait beaucoup de temps. C'est juste plus facile à lire, d'une part. Et cela supprime le besoin d'un nul à la fin de toute liste multi-objets, qui a toujours été un bugaboo personnel. Nous avons tous nos moulins à vent avec lesquels basculer, n'est-ce pas? ;-)
Je pensais juste que je jetterais ça dans le mélange. J'espère que ça aide.
la source
Voici une extension UITableView avec Swift 5:
Appeler avec
la source
J'ai besoin de la cellule de mise à niveau mais je veux fermer le clavier. Si j'utilise
le clavier disparaît
la source