J'ai un UITableView
et un certain UITableViewCells
que j'ai créés manuellement via le Interface Builder . J'ai assigné une outlet
à chaque cellule et je les connecte à la UITableView
dans la méthode CellForRowAtIndexPath
. Dans cette méthode, j’utilise la méthode switch(case)
pour faire apparaître des cellules spécifiques dans la UITableView
, selon le cas.
Maintenant, je veux trouver une cellule spécifique et vérifier s'il existe dans la variable UITableView
. J'utilise la méthode: UITableView.visibleCells
pour obtenir un tableau des cellules dans la vue tableau. Ma question est - comment puis-je vérifier si une cellule spécifique existe dans le tableau? puis-je utiliser le point de vente que je lui ai assigné? - (La meilleure solution), OU puis-je utiliser un identifiant et comment?
Merci :)
Notez que vous pouvez également utiliser indexPathsForVisibleRows
de cette façon:
NSUInteger index = [_people indexOfObject:person];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:index inSection:0];
if ([self.tableView.indexPathsForVisibleRows containsObject:indexPath]) {
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationFade];
}
Si vous avez le chemin indexPath (et n'avez pas besoin de la cellule réelle), il pourrait être moins cher .
PS: _people
est la NSArray
utilisée comme serveur principal dans ce cas.
if ([tableView.visibleCells containsObject:myCell])
{
// Do your thing
}
Cela suppose que vous avez une variable d'instance distincte contenant la cellule qui vous intéresse, je pense que vous le faites à partir de la question, mais ce n'est pas clair.
Vous pouvez utiliser la méthode UITableView:
[tableView indexPathForCell:aCell];
Si la cellule n'existe pas dans la table, elle retournera nil. Sinon, vous obtiendrez le NSIndexPath de la cellule.
Vous pouvez le faire dans Swift 3 pour vérifier si la UITableViewCell
est visible:
let indexPathToVerify = IndexPath(row: 0, section: 0)
let cell = tableView.cellForRow(at: indexPathToVerify)
if tableView.visibleCells.contains(cell) {
// the cell is visible
}