2012-02-15 5 views
0

Existe-t-il un autre moyen d'appeler un UIViewCOntroller sans ce qui suit?Comment appeler un UIViewController

HelloUIViewController *hello = [[HelloUIViewController alloc]initWithNibName:nil bundle:nil]; 
[self.navigationController pushViewController:hello animated:YES]; 

Le code ci-dessus définir l'affichage dans une barre de navigation où vous obtiendrez le même BackButton (le bouton en forme de flèche lorsque vous naviguez d'une vue à).

Je veux juste aller à une nouvelle UiviewController, et je ne veux pas avoir un backButton (essentiellement le viewController ne doit pas être poussé dans la pile de navigation)

+0

Vous cherchez un [vue modal] (https://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html)? – esqew

+0

Vous pouvez rencontrer des problèmes en poussant votre vue sans le nom de la plume spécifié. –

+1

@BillBrasky Quels sont les problèmes? Si vous ne spécifiez pas le nom, '-loadView' de UIViewController recherchera une plume dont le nom correspond à celui du contrôleur de vue, c'est-à-dire HelloUIViewController.xib dans ce cas. – Caleb

Répondre

2

Cela devrait fonctionner:

UIWindow *window = [[UIApplication applicationDelegate] window]; 
window.rootViewController = [[HelloUIViewController alloc] initWithNibName:nil bundle:nil]; 

Bien sûr, ce n'est peut-être pas ce que vous voulez. Il va installer le contrôleur de vue en tant que contrôleur de vue racine de la fenêtre. Si vous souhaitez conserver votre contrôleur de navigation et afficher le nouveau contrôleur en dehors de la pile de navigation, vous devez présenter le contrôleur de vue de manière modale. D'un autre contrôleur de vue, vous pouvez:

HelloUIViewController *hello = [[HelloUIViewController alloc]initWithNibName:nil bundle:nil]; 
[self presentViewController:hello animated:YES completion:nil]; 
+1

Il devrait apparaître horizontalement, comme le pushviewcontroller. et non verticalement. – sharon

+1

Pouvez-vous expliquer pourquoi vous ne voulez pas le pousser sur la pile de nav? Il semble que vous le vouliez * regarder * comme s'il faisait partie de la pile de navigation, et ne pas afficher la barre de navigation ou le bouton de retour. Cacher la barre de navigation et pousser normalement comme décrit est la façon facile de faire ce que vous voulez. – Caleb

2

Si vous ne voulez pas le navigationBar, présent votre ViewController modalement.

[self presentModalViewController:helloViewController animated:YES]; 
+0

Notez que cette méthode n'est pas préférée par Apple à partir d'iOS 5 (voir https://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIViewController_Class/Reference/Reference.html). Au lieu de cela, utilisez 'presentViewController: animated: completion:'. – kevboh

+0

Vous avez raison. Je prenais juste celui que j'avais mémorisé = p – ArtSabintsev

+0

Il devrait apparaître horizontalement, comme le pushviewcontroller. et non verticalement. – sharon

1

vous pouvez masquer la barre de navigation:

self.navigationController.navigationBarHidden = YES; 

Ou si vous voulez garder la barre de navigation, mais seulement se débarrasser du bouton de retour, vous pouvez faire quelque chose comme ceci:

self.navigationController.backItem.hidesBackButton = YES; 
Questions connexes