0

プログラムでタブバーコントローラーを追加してから、2つのビューコントローラーを追加しました。同じコードは次のとおりです。

ExampleViewcontroller.m

self.tabController = [[UITabBarController alloc] init];

viewController1 =[[invoiceviewcontrolleralloc]
initWithNibName:@"invoiceviewcontroller" bundle:nil];

viewController1.title = @"Unpaid Invoice";

viewController2=[[remittanceviewcontrolleralloc]
initWithNibName:@"remittanceviewcontroller" bundle:nil];

tabController.view.frame = CGRectMake(0, 0, 320, 460);

self.tabController.viewControllers = [NSArray arrayWithObjects:
viewController1,viewController2,nil];

[self.view addSubview:tabController.view]; 
tabController.delegate=self;

self.view bringSubviewToFront:tabController.view];

tabbarcontrollerの方法は次のとおりです。-

-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:
(UIViewController *)viewController
{

if(tabController.selectedIndex==0)
{
[viewController2.view removeFromSuperview];

[self.view addSubview:viewController1.view];
}

else  if(tabController.selectedIndex==1)
{    
[viewController1.view removeFromSuperview];

[self.view addSubview:viewController2.view];
}

[self.view bringSubviewToFront:tabController.view];
}

コードは正常に実行されますが、ビューコントローラが接続する2番目のタブをクリックすると、対話性が失われます。つまり、その中の機能はクリックに応答しません。

4

1 に答える 1

0

UITabBarController は、UIVIewController 階層の最上位に位置するか、モーダルで直接表示されることを意図しています。そのビューを別の UIViewControllers のビュー内に配置して、正しく動作することを期待することはできません。実際、ビュー コントローラーのビューを別のビュー コントローラーに手動で追加していることに気付いた場合は、おそらく間違った方法で行っている可能性があります。View Controller を適切に使用している場合は、View Controller がそれを処理します。

ここで「タブ バー インターフェイスの作成」を読み、箇条書きに特に注意してください: http://developer.apple.com/library/ios/ipad/#documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/TabBarControllers.html# //apple_ref/doc/uid/TP40011313-CH3

于 2012-04-21T17:12:40.677 に答える