буквально сегодня пришлось сделать подобную конструкцию, все работает, выкладываю для примера, может поможет.
Итак :
1) SomeTabBarController
@interface SomeTabBarController: UIViewController
{
UITabBarController *tabBarController_;
UIViewController *someContr1_;
UIViewController *someContr2_;
}
@End
@implementation SomeTabBarController
- (id) init
{
if(self = [super init])
{
tabBarController_ = [ [UITabBarController alloc] init];
SomeContr1_ = [ [SomeController alloc] init];
SomeContr2_ = [ [SomeController alloc] init];
[SomeContr1_ setRootController_: self];
[SomeContr2_ setRootController_: self];
tabBarController_.viewControllers = [NSArray arrayWithObjects: SomeContr1_, SomeContr2_, nil];
[SomeContr1_ release];
[SomeContr2_ release];
self.view = tabBarController_.view;
}
return self;
}
...
@End
2) SomeController
@Class SomeTabBarController
@interface SomeController : UIViewController
{
...
SomeTabBarController *RootController_;
}
@property(nonatomic, assign) SomeTabBarController *RootController_;
@End
@implementation SomeController
@syntesize RootController_;
...
- (void) viewWillAppear: (BOOL) animated
{
self.RootController_.Title = @"Some Title";
UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemAdd
target: self
action: @selector(someselector)];
self.RootController_.navigationItem.rightBarButtonItem = rightBarButtonItem;
[rightBarButtonItem release];
[super viewWillAppear: animated];
}
...
@End
3) запуск окна TabBarController
...
MyController = [ [SomeTabController alloc] init];
[self.navigationController pushViewController: MyController animated: YES];
[MyController release];
...
В 3) self не имеет значения - это вызывающий класс
В общем идея этого всего в ссылке RootController_, через который происходит взаимодействие с NavigationController.