Voilà une façon de voir les choses:
Une séquence de vue-contrôleurs dans le contrôleur de navigatoin unique représentent un flux unique dans la tête de l'utilisateur. Si, à un moment donné, vous devez interrompre le flux de travail en cours et créer un flux de travail divergent, vous créez une boîte de dialogue modale. Si le nouveau workflow ne comporte qu'une seule étape, vous présentez simplement le contrôleur correspondant, mais si vous avez plusieurs étapes, créez un nouveau contrôleur de navigation pour enchaîner les étapes.
Les visuels sont différents - avec l'attention de l'utilisateur du contrôleur de navigation se déplace de gauche à droite, tout en dialogue modal de haut en bas. Imaginez que vous êtes en train de feuilleter un livre (de gauche à droite) et que, à un moment donné, vous l'enlevez, puis tirez un autre livre sous la table et placez-le devant vous (de haut en bas), puis démarrez en passant par ce autre livre (de gauche à droite). Ensuite, vous fermez tout le deuxième livre et revenez au premier livre où vous vous êtes arrêté.
La méthode addSubview est sur un plan d'abstraction différent - subviews sont utilisés pour créer les deux expériences décrites plus haut. Vous pouvez utiliser des sous-vues pour créer une expérience différente qui serait au même niveau d'abstraction. Deux autres exemples de constructions au même niveau sont UIAlertView et UIActionSheet.
Quand utiliseriez-vous presentModalViewController et pushViewController? Je ne suis pas sûr quand je devrais utiliser quoi. –
Modal: http://developer.apple.com/iPhone/library/featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html NavController: http://developer.apple.com/iPhone/library/featuredarticles/ViewControllerPGforiPhoneOS/NavigationControllers/NavigationControllers. html –