web-dev-qa-db-fra.com

viewDidAppear pour UITableViewCell

J'utilise généralement la méthode viewDidAppear pour faire des trucs d'interface utilisateur sur la vue une fois qu'elle est apparue et j'ai utilisé cette méthode dans diverses situations où elle était très utile, cependant, je dois faire quelques changements d'interface utilisateur sur un UITableViewCell après son apparition, existe-t-il une méthode disponible dans le SDK qui effectue un travail similaire comme viewDidAppear mais pour UITableViewCell?

p.s. willDisplayCell n'a pas fonctionné dans mon cas, j'ai besoin de quelque chose comme didDisplayCell s'il existe vraiment.

31
JAHelia

Le UITableViewDelegate a ces fonctions:

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)

func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath)

La cellule elle-même n'a pas de rappel pour cela.

30
neoneye

Si vous devez réagir aux modifications apportées au cadre de la cellule et ajuster la disposition, vous devez implémenter -layoutSubviews dans la classe de cellule. N'oubliez pas d'appeler [super layoutSubviews].

11
Mike Weller

La méthode viewDidLoad est liée à UIViewController et ses sous-classes, nous ne pouvons donc pas l'utiliser dans UITableViewCell, qui est une sous-classe UIView. La solution que j'ai utilisée dans l'une de mes applications est de remplacer la méthode layoutSubViews de UITableViewCell, et j'ai retardé l'action pendant un certain temps comme ci-dessous.

- (void)layoutSubViews
{
     [super layoutSubviews];

     [self performSelector:@selector(myMethod) withObject:nil afterDelay:1.0];
}
2
Ganesh