Veuillez faire la différence entre presentViewController
et UiNavigationController
? Puis-je utiliser presentViewController
au lieu de UINavigationController
pour parcourir différentes vues dans l'application? Quel est le scénario à utiliser non plus?
presentViewController
offre un mécanisme pour afficher un soi-disant contrôleur de vue modale; c'est-à-dire un contrôleur de vue qui prendra le contrôle total de votre interface utilisateur en étant superposé au-dessus d'un contrôleur de présentation.
UINavigationController
offre un mécanisme beaucoup plus flexible où vous pouvez pousser un nouveau contrôleur, puis le faire éclater, afin de revenir au précédent, de manière ordonnée. Imaginez que les contrôleurs d'un contrôleur de navigation construisent simplement une séquence de gauche à droite.
Je pense que presentViewController
est le plus approprié pour une utilisation avec juste n contrôleur de vue présenté à la fois. Vous pouvez sûrement l'utiliser pour empiler plus de contrôleurs de vue les uns sur les autres (et donc "imiter" le contrôleur de navigation d'un pauvre), mais je parie que vous trouverez rapidement quelque chose qui ne fonctionne pas comme prévu.
Plus précisément, un exemple d'une telle limitation est le suivant: lorsque vous supprimez un contrôleur de vue modale (afin de le "fermer"), tous vos contrôleurs de vue présentés de façon modale (à partir du même contrôleur de présentation) seront également rejetés simultanément. Ainsi, vous ne pourrez tout simplement pas implémenter une fonctionnalité de type "retour en arrière"/navigation.
Cela dépend donc de ce que vous essayez de faire.
Un UINavigationController
est une sous-classe de UIViewController
qui gère une pile de contrôleurs de vue et ajoute un bouton de retour, etc.
presentViewController
est une méthode de la classe UIViewController
que vous utilisez pour présenter un contrôleur de vue modale.
UINavigationController
gère une pile de navigation pour vous. Vous pouvez alors naviguer dans le contenu hiérarchique.
Si vous utilisez la méthode UIViewControllers
presentViewController
, vous remplacez simplement le contrôleur de vue. aucune pile de navigation n'est conservée pour vous.
UINavigationController est une classe, presentViewController est une méthode d'instance d'UIViewController (iOS 5 +), dont UINavigationController est une sous-classe.
pushViewController est une méthode comparable à presentViewController. Il s'agit d'une méthode d'instance de UINavigationController, pour iOS 2 +