Comment remplacer RootViewController dans “Navigation-based application”
J'ai une application qui utilise la fonction "navigation application basée sur le" modèle dans XCode.
Maintenant, je veux le modifier de sorte que la première vue que les charges est régulier (personnalisé) UIView, et si l'utilisateur clique sur un bouton particulier, je pousse l'original RootViewController sur le NavigationController.
Je comprends que quelque part, quelqu'un appelle avec mon RootViewController:
- (id)initWithRootViewController:(UIViewController *)rootViewController
Je veux savoir comment faire pour remplacer l'argument avec ma nouvelle classe.
OriginalL'auteur iter | 2011-04-29
Vous devez vous connecter pour publier un commentaire.
si vous souhaitez remplacer la racine de la vue-contrôleur de votre pile de navigation vous pouvez remplacer le premier objet de son point de vue, les contrôleurs de tableau -
Avez-vous déjà essayé cela? Vous ne pouvez pas convertir un NSArray avec un NSMutableArray! Vous devez créer un NSMutableArray avec [auto.navigationController.viewControllers mutableCopy].
OriginalL'auteur
^ Ce sont toutes des façons de le faire par programmation. C'est cool. Mais j'utilise l'interface builder et des storyboards dans Xcode, c'est donc un moyen simple et rapide pour ajouter une nouvelle vue-contrôleur:
Tada! Profitez de votre nouvelle vue de la racine contrôleur sans la tenue de votre journée avec programmatique de la création.
Mais l'OP a une question sur "Remplacer" le RootViewController après un clic sur un bouton, donc ce n'est pas la réponse à la question.
cette stackoverflow page a été top résultat de recherche de google pour xcode, interface builder méthode pour changer la racine de vue-contrôleur. votre réponse travaillé parfaite, merci!
OriginalL'auteur
Regarder à l'intérieur de l'application principale délégué .m de fichiers et de trouver la méthode la
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Intérieur, il sera une ligne comme ceci
self.window.rootViewController = self.navigationController;
Vous pouvez instancier un différentes-vue-contrôleur de là et de l'assigner en rootViewController
didFinishLaunching
ne pas instancier navigationController. Je suis curieuse de savoir qui et où, et comment je peux faire une remarque. Théoriquement, ce que je veux éviter, c'est de faire le travail deux fois (c'est à dire de l'instanciation et immédiatement défausser d'une manette de navigation). Vraiment, je suis en train d'essayer de comprendre les coulisses de la magie qui est XIB.C'est en fait stockée dans la MainWindow.xib fichier et est chargé paresseusement sortir de là, je crois. Je pense que vous pourriez modifier la valeur par défaut c'est à l'aide par le biais de l'interface builder, mais je ne l'ai pas fait avant. Nous avons presque toujours tout faire à partir de code sans interface builder, nous avons donc éviter que tout.
Ouais, j'ai presque toujours tout faire à partir du code, trop. C'est un ancien projet-un héritage de la courbe d'apprentissage.
OriginalL'auteur