2011-09-09 16 views
7

私のアプリケーションのナビゲーションでは、私はUITabBarControllerを使用しています。これは正常に動作しますが、私のビューコントローラーの1つでは、別のビューコントローラーをタブバービューにプッシュしたいと思います。 つまり、選択したビューコントローラを別のビューコントローラに置き換えたいとします。 私は、次のコードでこれをやっている:別のView ControllerをUITabBarControllerビューにプッシュ

self.tabBarController.selectedViewController = self.otherViewController; 

私TabBarControllerでviewControllersのリストがotherViewControllerが含まれていません。 このトリックはIOS 4.3ではうまく動作しますが、IOS 5ではこれが好きではありません。

誰もがIOS 5で受け入れられる解決策を知っていますか?

答えて

12

をあなたは別のビューコントローラとタブバーで、そのビューコントローラを交換したいですか? その場合は、新しいタブバーを設定してタブバーのviewControllersプロパティを編集する必要があります。それはのようになります。これは動作します

UIViewController *thisIsTheViewControllerIWantToSetNow; 
int indexForViewControllerYouWantToReplace; 

NSMutableArray *tabbarViewControllers = [self.tabbar.viewControllers mutableCopy]; 

[tabbarViewControllers replaceObjectAtIndex:indexForViewControllerYouWantToReplace withObject:thisIsTheViewControllerIWantToSetNow]; 

self.tabbar.viewControllers = tabbarViewControllers; 

[tabbarViewControllers release]; 
+0

が、あなたはNSMutableArrayの(あなたのViewController配列のmutableCopy) –

+0

ああ、あなたは正しいを取らなければならない、私は私がreplaceObjectAtIndexを実現するためにXcodeのなしていることを入力しました: NSMUTABLEArrayの場合を除いて、withObjectは存在しません。 –

+0

wỏkですが、タブバーのアイコンが表示されず、別のタブに触れて戻るときに、ビューを変更すると「遅れます」と思う – user1561904

0

このタブでナビゲーションコントローラなどを使用することはできません。

とにかく、この作業をする必要があります:

NSMutableArray *controllers = [NSMutableArray arrayWithArray:rootTabBarController.viewControllers]; 
[controllers replaceObjectAtIndex:rootTabBarController.selectedIndex withObject: newController]; 
rootTabBarController.viewControllers = controllers; 
関連する問題