Lorsque le code avec l'application de navigation iOS, j'ai du mal à face avec ceci:viewWillAppear vs viewDidLoad ios
où je peux mettre la méthode "initdata" pour UITableView? dans viewWillAppear ou viewDidLoad?
aidez-moi s'il vous plaît.
Lorsque le code avec l'application de navigation iOS, j'ai du mal à face avec ceci:viewWillAppear vs viewDidLoad ios
où je peux mettre la méthode "initdata" pour UITableView? dans viewWillAppear ou viewDidLoad?
aidez-moi s'il vous plaît.
Vous pouvez mettre InitData selon vos besoins de l'application,
si votre table a besoin de charger des données à chaque fois que de nouvelles données, alors il devrait être sous
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
//initData
}
Sinon, si les besoins de table à recharger par une seule donnée qui ne varie pas ou il n'y a aucune opération d'édition effectuée sur les données, vous devez utiliser
- (void)viewDidLoad {
[super viewDidLoad];
//initData
}
si je mets le code à la fois place. Il va exécuter ce code 2 fois quand je pousse ce tableView dans un UInavigationcontroller – Clover03ti05
Vous devez le placer sous "viewwillAppear" seulement, comme votre tableau en fonction de la valeur de modification de l'enfant View.It fonctionnera. –
Ne jamais init des données dans viewWillAppear. En fonction de la manière dont vous chargez le contrôleur de vue dans l'écran (dans d'autres VC ou dans les segments), il ne peut pas être invoqué du tout. –
Il est préférable d'appeler en initWithNibName:bundle:
ou initWithCoder:
et libérer les données chargées dans -(void)dealloc
.
En outre, vous pouvez avoir cela dans viewDidLoad
et libérer les données chargées dans viewDidUnload
. Mais il vaut mieux éviter d'appeler que de viewWillAppear:
Edit:
J'espère que ce tableau dépend de la sélection dans la vue parent. Dans ce cas, écrivez une méthode setter, qui définit la condition et init les données avant de pousser le contrôleur de vue.
DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
// Pass the selected object to the new view controller and depend on that, load the data.
[detailViewController initData:(id)[_list objectAtIndex:indexPath.row]];
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
dans mon cas, j'ai un NSArray besoin de se préparer pour uitableview. et la valeur de ce tableau en fonction de la valeur de modification de la vue enfant. – Clover03ti05
J'ai modifié ma réponse – Ilanchezhian
Cela dépend de ce que vous entendez par données init. – Sulthan
Quelle est votre exigence. –