Y a-t-il un moyen de dire si un nouveau contrôleur provient d'un bouton de navigation arrière ou a été poussé sur la pile? Vous souhaitez recharger des données uniquement pour appuyer sur la pile de navigation, non sur une touche arrière, appuyez sur. P>
3 Réponses :
Si votre poussée inclut également l'instanciation du contrôleur d'affichage, placez votre logique Push-seule dans ViewDidLoad Code>. Il ne sera pas appelé à l'arrière car il a déjà été chargé. P>
Ne pouvait-il pas être appelé sur le dos si la vue a été déchargée en raison de la pression de la mémoire?
dépend si vous le déchargez ou non
Vous pouvez définir un ivar Bool appelé instancié, puis la définir sur Oui à la fin de la vieilleDidloadload. Une fois que cela est défini sur Oui, ne faites pas ce que vous voulez seulement arriver une fois.
Vous pouvez implémenter l'UINAVIGATIONCONTROLLERDELEGATEGATE ET RÉLUMER LE `NAVIGATIONCONTROLLER: DIDSHOWVIEWCONTROLLER: Animated: 'Méthode. Vous devrez ensuite vérifier le contrôleur d'affichage renvoyé pour déterminer si vous êtes revenu du contrôleur d'affichage attendu.
- (void)navigationController:(UINavigationController*)navigationController didShowViewController:(UIViewController*)viewController animated:(BOOL)animated { if (yourPushedViewController == viewController) { // Do something } }
à partir de iOS 5.0 Vous pouvez le faire:
- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; if (self.isBeingPresented || self.isMovingToParentViewController) { // "self" is being shown for the 1st time, not because of a "back" button. } }
Cela ne fonctionnera pas si votre contrôleur de vue est le premier contrôleur d'affichage sur l'onglet d'un contrôleur de barre d'onglets. Cela fonctionnera la première fois, mais à la suite de la commutation à l'onglet d'utilisation apparaîtra comme s'il s'agissait d'une action arrière, car aucun isbeingpresenté code> ni
ismovingtoparentviewController code> sera vrai. Un tel cas est rare, mais si c'est votre situation, consultez Stackoverflow.com/a/40801594/5152481
Cela ne semble pas fonctionner dans iOS10 - IsbeingPresenté et IsmovingToparentViewController sont tous deux faux la première fois que mon contrôleur d'évaluation est présenté.
@Kendallhelmsettergelner appelez-vous ceux-ci dans ViewWill | Didappear Code> ou
ViewWill | Diddisappear Code>? Ils ne travaillent que dans ces 4 méthodes.
@MADDY - Oui, je parle de la vue standardWillappear: méthode. Les deux valeurs sur la VC actuelle sont venues de faux dans IOS10.