2011-10-18 1 views
0

私は、タブバータブを適切に切り替えることを試みているアプリケーションを持っています。タブをクリックすると、タブをクリックします。タブが呼び出され、私の問題は、私がビューの切り替えを行っているタブをクリックすると、ナビゲーションバーが消えてタブバーのイメージとタイトルも消えます。この問題を解決するのを手伝ってください。これは私のコードです。 appdelegateでタブバーコントローラがクリックされたときにナビゲーションバーを取得する方法

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 
    NSString *clockswitch = [[NSUserDefaults standardUserDefaults]objectForKey:@"clock"]; 
    UIViewController *desiredController = nil; 
    if ([clockswitch isEqualToString:@"digital"]) { 
     desiredController = [[DigitalClockViewController alloc] initWithNibName:@"DigitalClockViewController" bundle:nil ]; 


    } 
    else { 
     desiredController = [[AnalogClockViewController alloc]initWithNibName:@"AnalogClockViewController" bundle:nil]; 


    } 
    NSMutableArray *controllersCopy = [self.tabBarController.viewControllers mutableCopy]; 
    [controllersCopy replaceObjectAtIndex:0 withObject:desiredController]; 
    self.tabBarController.viewControllers = controllersCopy; 

} 

答えて

0

あなたはナビゲーションバーを持っているあなたのタブバーコントローラ内の各ビューコントローラが必要な場合は、その後、ナビゲーションコントローラとの各ビューコントローラが、ナビゲーションコントローラを「ラップ」する必要がありますタブバーコントローラのviewControllersプロパティに追加します。あなたはそのようにそれをラップ:あなたが望むように見えるよう

UINavigationController *controller = [[UINavigationController alloc] initWithRootViewController:desiredController]; 
+0

これはうまくいきましたが、どのようにtabbaritemのタイトルと画像を表示するかを示しています。 – Rani

+0

あなたのviewControllerのタイトルと、その画像のnavigationControllerのtabBarItemを編集する必要があります。 –

+0

私はviewControllerのタイトルを編集しましたが、tabbaritemのタイトルと画像は表示されません – Rani

1

あなたのコードは、選択したビューコントローラを変更していない、あなたのビューコントローラがタブバーに表示される順序を変更しています。これにより、同じビューコントローラがバーに2度表示され、意図しない副作用が発生する可能性があります。

selectedIndexまたはselectedViewControllerを使用して選択を変更します。すでに存在するコントローラの1つを選択したい場合は、alloc/init新しいものを選択する必要があります。 Johannesが言っているように、コントローラーのリスト内の項目は、UINavigationControllerであり、クラスのインスタンスであるrootViewController()です。

+0

詳細を教えてください。いくつかのサンプルコードを提供できますか? – Rani

0
if ([clockswitch isEqualToString:@"digital"]) 
{ 
    desiredController = [[DigitalClockViewController alloc] initWithNibName:@"DigitalClockViewController" bundle:nil ]; 
    navigationController=[[UINavigationController alloc] initWithRootViewController:desiredController]; 
    [self presentModelViewController:navigationController animated:YES]; 
    [navigationController release]; 
    [desired... release]; 


} 
else { 
    desiredController = [[AnalogClockViewController alloc]initWithNibName:@"AnalogClockViewController" bundle:nil]; 

...//same code 
} 
関連する問題