Domanda

Ho un'app di navigationController.

Spingo una barra sulla vista. Le schede funzionano, il titolo è cambiato, perfetto. Ora una delle mie schede ha un elenco e provo a collegarmi a una pagina figlio all'interno della barra delle schede:

NextViewController *nextController = [[NextViewController alloc] initWithNibName:@"ProfileDetailController" bundle:nil];
[self.navigationController pushViewController:nextController animated:YES];

Non succede nulla. Ovviamente funziona:

self.view = nextController.view;

Voglio poter passare a questa sottopagina nella mia barra delle schede E cambiare i pulsanti delle barre di navigazione. È possibile?

È stato utile?

Soluzione

Sembra che tu stia spingendo un UITabBarController su un UINavigationController ? Da documentazione di Apple , non puoi inserire un controller della barra delle schede in un controller di navigazione.

Quello che probabilmente vuoi fare è l'opposto: avere un controller della barra delle schede con UINavigationController come elementi della scheda. È simile all'interfaccia in, ad esempio l'app per iPod o l'app per telefono.

Altri suggerimenti

Sono d'accordo con Alex: un TabBarController all'interno di un controller di navigazione non sembra un bel modello di interfaccia utente.

Ad ogni modo, per rispondere alla tua domanda: hai provato ad accedere al controller di navigazione tramite il controller della barra delle schede?

self.tabBarController.navigationController

Non sono sicuro che funzioni, ma potresti provarlo.

Penso di aver trovato una soluzione semplice.

Nella tua classe in cui desideri spingere una vista, dichiara un UINavigationController locale come proprietà:

@interface userMenu : UIViewController  {
UINavigationController *navigationController;
}
@property (nonatomic, retain) UINavigationController *navigationController;

Ricorda di sintetizzarlo.

Nella tua classe per il tabBarController :

NSArray *viewControllersArray = [self.tabBarController viewControllers];

userMenu *childUserMenu = (userMenu*) [viewControllersArray objectAtIndex:0];
childUserMenu.navigationController = self.navigationController;

Successivamente puoi eseguire [self.navigationController pushViewController: nextController animato: YES];

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top