Quando si parla di spingendo Navigation Controller, è più probabile che si desidera presentarlo.
- Presentando UINavigationController
Questo è il modo più comune e questo è ciò che si vuole fare nella maggior parte dei casi. UINavigationController
non può essere premuto, può essere presentato solo con un nuovo controller di visualizzazione radice.
MyViewController* vc = [[MyViewController alloc]
initWithNibName:@"MyController" bundle:nil];
UINavigationController *myNav = [[UINavigationController alloc] initWithRootViewController: vc];
[self presentViewController:myNav animated:YES completion:nil];
Quello che fai qui, è prima di tutto creare un UINavigationController
e quindi impostare necessarie UIViewController
come controller principale.
- Spingendo UINavigationController
Se si dispone di una gerarchia di ViewControllers e avete bisogno di spingere View Controller che contiene controller di navigazione all'interno, passaggi sono :
1) Premere ViewController, contenente UINavigationController
.
Per spintaUINavigationController
, prima creare una sottoclasse di UIViewController
, che sarà un/classe di contenitore-wrapper- per il vostro UINavigationController
e il suo contenuto.
ContainerViewController* vc = [[ContainerViewController alloc] init];
2) Aggiunta di UINavigationController come un controller di vista bambino
In viewDidLoad
del vostro contenitore (che si è appena istanziato) semplicemente aggiungere qualcosa di simile:
MyNavController* myNav = [[MyNavController alloc] init];
[myNav willMoveToParentViewController:self];
myNav.view.frame = self.view.frame; //Set a frame or constraints
[self.view addSubview:myNav.view];
[self addChildViewController: myNav];
[myNav didMoveToParentViewController:self];
Quello che fai qui è fondamentalmente istanziare il controller di navigazione e aggiungerlo come controller figlio al proprio wrapper. Questo è tutto. Il valore corretto è spinto sul tuo UINavigationController.
È necessario premere un controller di visualizzazione, non un altro controller di navigazione. Se vuoi davvero visualizzare un altro controller di navigazione, devi presentarlo, non premerlo. – rmaddy
Grazie molto pronto, l'errore è andato, ma va al tavoloViewController, lo voglio sui dettagli, grazie – Jose
Dai un'occhiata a questa discussione http://stackoverflow.com/questions/10817305/pushing-a-navigation -controller-is-not-supported-performing-segues/23102975 # 23102975 (Ho una risposta che ha funzionato per me, ma forse uno degli altri farà il trucco per te.) – LordParsley