2011-06-18 16 views
1

UIViewControllerからUITabBarControllerを表示しても私のUITabBarが完全に表示されません。私が間違っていることを教えてください。UITabBarControllerはUITabBar(画面外)の半分しか表示していません

私のコードは次のとおりです。

//some method 

LoggedInViewController *lvc = [[[LoggedInViewController alloc] initWithAccount:account] autorelease]; 
[self presentModalViewController:lvc animated:YES]; 

- (void)viewDidLoad 

{ 
    self.tabController = [[UITabBarController alloc] init]; 
    LoggedInFeedNavigationController *navController = [[LoggedInFeedNavigationController alloc] initWithAccount:self.account]; 
    [self.tabController setViewControllers:[NSArray arrayWithObject:navController]]; 
    [self.view addSubview:self.tabController.view]; 
    [super viewDidLoad]; 
} 
+0

バーのどの部分が表示されませんか?全体のビューが画面外に移動したように見えますか? –

+0

@ニコラスSはい、それは正しいです。 –

+0

"タブバーインターフェイスを展開するときは、このビューをウィンドウのルートとしてインストールする必要があります。他のビューコントローラとは異なり、タブバーインターフェイスは他のビューコントローラの子としてインストールしないでください。 source http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UITabBarController_Class/Reference/Reference.html – AmineG

答えて

1

それが行うには良い方法ではありません。

[viewController1.view addSubview:viewController2.view]; 

MVCデザインのポイントは失われます。 View Controllerは(モデルから)データを取得し、ビューに配置する必要があります。複数のビューがある場合は、対応するデータを受け入れるビューの機能を配置するだけです。

あなたは次のことを行う必要がありタブバーコントローラを必要とするので、場合:

// assuming you are in the same initial controller 
UITabBarController* pTabBarControllerL = [[UITabBarController alloc] init]; 
MyFirstController* pFirstControllerL = [[MyFirstController alloc] init]; 
[pTabBarControllerL setViewControllers:[NSArray arrayWithObject:pFirstControllerL]]; 
// perhaps set more tab bar controller properties - button images and so on 
[self presentModalViewController:pTabBarControllerL animated:YES]; 
// release the memory you do not need 

-(void)viewDidLoad { 
    // do your work in pFirstControllerL 
} 

PS:あなたはUINavigationControllerとUITabBarControllerをサブクラス化してはいけません。

0

実際にはAppleの推奨事項に従ってUITabBarViewControllerをUIWindow階層のルートにする必要があります。私たちは、TabBar VCまたはNavigation VCをルートにするのは困難でした。

関連する問題