2011-10-11 5 views
0

J'essaie d'avoir la possibilité d'activer et de désactiver les vues. Les écrans sont générés à la volée et il peut y avoir entre 30 et 100 d'entre eux qui seront présentés séquentiellement. Un NavigationController peut fonctionner, mais je suis peut-être en train de créer une centaine d'écrans, donc je crains que la mémoire soit insuffisante si je pousse autant de vues. Peut-être que cela pourrait fonctionner si je n'ajoute qu'un seul écran à la fois au NavigationController, et quand un nouveau est ajouté, supprimez tous les écrans et ajoutez le nouveau. Mais cela peut provoquer des animations étranges.iOS Custom View Controller

J'ai essayé de créer un sélecteur de vue personnalisé qui pourrait charger chacune des vues à la volée en suivant l'exemple du chapitre 6 dans le livre apress. Le problème est que sur les rotations, les événements ne parviennent pas au View Controller pour la vue actuellement visible. Donc ça finit par faire des choses bizarres sur les rotations d'écran.

Une autre approche que je pense peut fonctionner est d'utiliser un contrôleur de barre d'onglets et rendre les onglets invisibles. Ensuite, je peux juste utiliser les onglets 1 et 2 pour tenir la vue actuelle, et la dernière vue et ping pong avant et en arrière. Ensuite, la mémoire n'est pas aussi problématique que l'utilisation d'un NavigationController.

Quelqu'un a-t-il d'autres idées? Je pense qu'il devrait y avoir un moyen plus facile de faire cela que je ne vois pas.

Répondre

0

Que diriez-vous de créer un "ScreenManager" singleton qui charge, ajoute et supprime vos vues sur votre contrôleur de vue racine? De cette façon, vous pouvez vous assurer que la hiérarchie de vue n'est pas compliquée et hors de votre contrôle. C'est aussi une bonne idée en matière de conception et devrait être très facile et efficace avec la gestion de la mémoire.