2009-07-29 18 views
2

私はnavigationControllerアプリケーションを持っています。Tabbarがナビゲーションコントローラにアクセスできない

私はビューにタブバーを押します。タブは作業タイトルが変更され、完璧です。今私のタブの一つがリストを持って、私はタブバー内の子ページへのアウトリンクしよう:

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

何も起こりません。コースはこれで動作します:

self.view = nextController.view; 

私のタブバー内でこのサブページにプッシュし、ナビゲーションバーのボタンを変更できます。これは可能ですか?

答えて

3

UITabBarControllerUINavigationControllerにプッシュしているようですね。 Apple's documentationから、タブバーコントローラをナビゲーションコントローラにプッシュすることはできません。

あなたがしたいことは、逆のことです:UINavigationControllerのタブバーコントローラをタブ項目として使用します。これは、iPodアプリやPhoneアプリのインターフェースと似ています。

+0

を行うことができた後、あなたは正しいです!私はこれを見つけ、それをすべて説明した。 http://www.youtube.com/watch?v=LBnPfAtswgw –

0

私はアレックスに同意します - ナビゲーションコントローラ内のTabBarControllerはすばらしいUIパターンのようには見えません。

質問に答えるには:タブバーコントローラ経由でナビゲーションコントローラにアクセスしようとしましたか?

self.tabBarController.navigationController 

これはうまくいきませんが、試してみるとよいでしょう。

+0

私のために働かなかった。 'tabBarController'の' navigationController'はゼロです。 – Xiao

0

私は簡単な解決策を見つけたと思います。ビューをプッシュするあなたのクラスで

、proptertyとしてローカルUINavigationControllerを宣言:

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

は、それを合成することを忘れないでください。 tabBarControllerのためのあなたのクラスで

NSArray *viewControllersArray = [self.tabBarController viewControllers]; 

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

あなたは[self.navigationController pushViewController:nextController animated:YES];

関連する問題