2013-03-06 2 views
0

J'ai rencontré un problème où la méthode viewDidAppear n'était pas appelée pour un UIViewController qui contenait un UITableView. En fait, les méthodes de source de données tableView étaient appelées immédiatement après viewWillAppear. J'ai trouvé que la raison de ceci était que le délégué tableView et la source de données étaient définis dans la méthode viewDidLoad (tableView reloaddata: was not being called). Si j'ai déplacé ces deux lignes de code à la méthode viewDidAppear (et ajouté tableView reloaddata :), tout a fonctionné correctement. Je suis un peu confus parce que je place normalement les délégués view dans la méthode viewDidLoad.Meilleure pratique lors de la définition du délégué et de la source de données UITableView

Quelqu'un a déjà vu ça auparavant? Est-ce un symptôme d'un problème plus important? Existe-t-il également une meilleure pratique en général pour définir le délégué et la source de données?

Tout aperçu serait apprécié. Merci!

Répondre

1

La méthode viewWillAppear sera appelée lorsque la vue d'un UIViewController est sur le point d'être affichée. La méthode viewDidAppear sera appelée après l'affichage de la vue d'un UIViewController.

Ces deux méthodes seront appelées à chaque fois que votre viewController va afficher la vue (c'est-à-dire la première fois ou il est découvert par un autre viewController). Donc, en général, vous devez définir le délégué dans la méthode viewDidLoad.

Le comportement que vous observez est absolument correct. Il n'y a pas un tel symptôme de plus gros problème.

Questions connexes