Рекомендация Apple состоит в том, что у вас есть контроллер TabBar, содержащий контроллеры навигации, а не наоборот. У меня более или менее похожая настройка, и у меня есть вкладка «Дополнительно», на которой находится контроллер Nav, в основном, такой:
@interface SomethingNavViewController : UIViewController {
UIView* aview;
UINavigationController *navigationController;
}
@property (nonatomic, retain) IBOutlet UIView *aview;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
@end
В NIB у меня есть отдельный контроллер Nav в виде панели more, я не заменил представление элемента панели вкладок на представление контроллера Nav, я только добавил контроллер Nav в представление.
В моем файле реализации у меня есть:
- (void)viewDidLoad {
[super viewDidLoad];
[[self view] addSubview:[navigationController view]];
SomeOtherController *aController = [[[SomeOtherController alloc ] initWithNibName:@"SomeOtherController" bundle:nil ] autorelease];
aController.title = @"Artwalks";
// lots of application logic here.
[self.navigationController pushViewController:aController animated:YES];
[self.navigationController setDelegate:self];
}
Одним из ключевых моментов этого является то, что я реализовал метод делегирования navigController, который очень удобен, когда вы просто вставляете контроллер nav. Когда я этого не делал, мои представления не получают сообщений viewDidAppear, поэтому я реализовал протокол и добавил этот метод:
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if ([viewController respondsToSelector:@selector(viewDidAppear:)]) {
[viewController viewDidAppear:animated];
}
}
и это решило множество моих давних проблем.
В любом случае, я надеюсь, что этот ответ дал вам детали, которые вам нужны. Если это не так, пожалуйста, дайте более подробную информацию о вашем вопросе. Я не совсем уверен, что , но я получаю и дополнительное представление откуда-то встретил, но это звучит как то, с чем я столкнулся, прежде чем нашел это решение.