Sautant à un viewcontroller dans une pile de navigation
J'ai un venir à travers un morceau de code pour pop à un viewcontroller dans une pile de navigation ci-dessous
for (UIViewController* viewController in self.navigationController.viewControllers) {
if ([viewController isKindOfClass:[MyGroupViewController class]] ) {
MyGroupViewController *groupViewController = (MyGroupViewController*)viewController;
[self.navigationController popToViewController:groupViewController animated:YES];
}
}
L'objectif est de la pop à MyGroupViewController. Mais je ne suis pas la compréhension de cette ligne de code.
MyGroupViewController *groupViewController = (MyGroupViewController*)viewController;
Ce qui est exactement ce qui se passe ici. Je ne pense pas qu'une nouvelle instance de MyGroupViewController est créé ici.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez aussi faire comme ceci
Code Swift
La vue des contrôleurs de la navigation contrôleur de pile sont énumérés. Depuis la vue de ces contrôleurs peuvent être de toute nature (mais il y aura toujours hériter de UIViewController), le générique de UIViewController est utilisé. Cependant, le compilateur ne saura pas ce type de vue-contrôleur est, elle est castée pour un MyGroupViewController. Lorsque cela se produit, le compilateur sait que le type de classe et vous pouvez envoyer des messages qui ne s'appliquent qu'à la classe.
Dans ce cas, il est un peu inutile, car il pourrait être simplifié à ceci:
Réponse courte: il change un type de variable du type spécifié dans les parenthèses pour éviter les avertissements du compilateur.
MyGroupViewController *groupViewController = (MyGroupViewController*)viewController;
Je voudrais savoir ce qui se passe dans le présent code. Est-ce groupViewController la même instance qui est dans la pile de navigation?Sur Swift
Nous avons écrire un meilleur tutoriel sur cela , Vous pouvez vérifier
https://appengineer.in/2014/03/13/pop-to-specific-view-controller-in-ios/