2

タブバーの外観を完全に制御できるように、カスタム UITabBarController を作成しています。すべてが機能しているので、処理するビューコントローラーの配列があります。

コントローラーには画面いっぱいに表示されるメイン ビューがあり、その内部にはタブ バーの下部に UIView があります。そのタブ バー ビューには、各ビュー コントローラーのボタンがあります。ボタンが押されたら、View Controller のビューをメイン ビューに追加し、タブ バー ビューを覆わないようにフレームを設定します。

controller.view.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height - kTabBarHeight);

これはすべて正常に機能し、View Controller 間をうまくフリックできます。ただし、モーダル ビュー コントローラーを表示してから閉じると、現在のビュー コントローラーのビューが全画面表示になり、タブ バーが隠れてしまいます。自動サイズ変更マスクをサイズ変更しないように設定しようとしましたが、引き続き発生します。

また、以下を使用して、ビュー コントローラー ビューを下部 (タブ バーの下) に追加しようとしました。

[self.view insertSubview:controller.view atIndex:0];

しかし、それを行うと、タブバーはモーダルビューの上にも表示されます! これは奇妙です。わからないところがあると思うので、どなたか教えていただけると助かります!

ありがとう、

マイク

4

3 に答える 3

2

これを試してみてください。タブバーコントローラー内に動的ビューコントローラーが必要だと思います。

-(void)applicationDidFinishLaunching:(UIApplication *)application {

// Add the tab bar controller's current view as a subview of the window
tabBarController.delegate=self;
tabBarController=[[UITabBarController alloc] init];

mainDashBoard=[[DashBoard alloc] initWithNibName:@"DashBoard" bundle:nil];
mainSearchView=[[SearchView alloc] initWithNibName:@"SearchView" bundle:nil];
mainMoreView=[[MoreView alloc] initWithNibName:@"MoreView" bundle:nil];

UINavigationController *nvCtr0=[[[UINavigationController alloc] init] autorelease];
UINavigationController *nvCtr1=[[[UINavigationController alloc] initWithRootViewController:mainDashBoard] autorelease];
UINavigationController *nvCtr2=[[[UINavigationController alloc] initWithRootViewController:mainSearchView] autorelease];
UINavigationController *nvCtr3=[[[UINavigationController alloc] initWithRootViewController:mainMoreView] autorelease];
UINavigationController *nvCtr4=[[[UINavigationController alloc] init] autorelease];//[[[UINavigationController alloc] initWithRootViewController:nil] autorelease];

tabBarController.viewControllers=[NSArray arrayWithObjects:nvCtr0,nvCtr1,nvCtr2,nvCtr3,nvCtr4,nil];

nvCtr0.tabBarItem.enabled=NO;
nvCtr4.tabBarItem.enabled=NO;

[window tabBarController.view];
}
于 2009-09-17T19:24:56.827 に答える
2

タブ コントローラーのタブ バーの上部にサブビューを挿入するだけで、タブ バーの外観を制御するより良い方法を見つけることができました。それは御馳走になりました!

于 2009-09-18T14:24:22.173 に答える
2

設定してみる

controller.view.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height - kTabBarHeight); 

コントローラの viewWillAppear メソッドで

于 2009-09-16T13:36:24.707 に答える