Utilizzare la procedura guidata per una scheda barra delle applicazioni, e configurarlo come normale. In qualsiasi scheda in cui si desidera aggiungere un controller di navigazione, crearlo in XIB utilizzando la libreria. Il mio XIB ha:
- File's Owner DescriptiveNameNavViewController
- First Responder
- View UIVIew
- Navigation Controller UINavigationController
- Navigation Bar UINavigationBar
Si noti che non c'è nulla nella vista. Vedi viewDidLoad sotto per dove UINavigationController viene collegato a UIView.
Nel file di intestazione per il ViewController della scheda (che ho chiamato DescriptiveNameNavViewController della scheda - non c'è uno standard particolare per questo, ma io uso [Something] NavViewController per ricordarmi che questo ViewController contiene un controller di navigazione con . lo stack di navigazione Questo è il nome del controller che ho impostato nel MainWindow.xib che la procedura guidata genera) Impostare un UINavigationController * IBOutlet che ha il controller di navigazione nel XIB collegato ad esso:
@interface DescriptiveNameNavViewController : UIViewController {
UINavigationController *navigationController;
}
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
@end
nel controllore per DescriptiveNameNavViewController, fai qualcosa di simile a questo:
L'impostazione del delegato nel DescriptiveNameNavViewController è super-importante, perché altrimenti non si otterranno i metodi chiamati che ci si aspetta nelle istanze DescriptiveNameViewController e qualsiasi altra cosa si inserisca nello stack del controller di navigazione.
In DescriptiveNameNavViewController, implementare i metodi UINavigationControllerDelegate come questo:
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if ([viewController respondsToSelector:@selector(viewDidAppear:)]) {
[viewController viewDidAppear:animated];
}
}
E questo modo, i messaggi per ottenere propagati ai controller all'interno del UINavigationController come ci si aspetta. Sembra che molti problemi incontrati dalle persone siano dovuti a viewDidAppear: o altri metodi non vengono richiamati su ViewControllers inseriti nel NavigationController.
In ogni caso, fatemi sapere se ulteriori dettagli potrebbero aiutare.
Direttamente dalla bocca del coder Tweetie: http://stackoverflow.com/questions/576764/tab-bar-controller-inside-a-navigation -controller-or-sharing-a-navigation-root-v – chrissr