2011-02-03 10 views
1

動的に変更されているタブを管理する方法が不思議です。TabBarを動的に変更するときのTabBarアクションの管理

たとえば、ホーム画面には4つのタブがあります。 2番目のタブをクリックします。私は今5つの異なるタブを持っています。私はそれらを動的に追加する方法を知っていますが、クリックされると何が起こるかを管理するのに苦労しています。

たとえば、ホーム画面が最初のタブです。最初のタブのための私の行動を処理しますが、私は2番目のタブをクリックしたときに、私は私のタブを変更するとき、私は私の最初のタブは、タブの私の最初のセットから最初のホーム・ページを可能にしたくない

if (viewController == [self.tabBarController.viewControllers objectAtIndex:0]){ 

。インデックス番号ではなく、IDでタブバークリックを管理する方法はありますか?もう1つの例は、私のログアウト機能は、最初のセットのタブバー4と2番目のセットのタブ5です。私はログアウトするために2番目のセットの4番目のタブをしたくない、現在はそれがインデックスを読み取る原因になります。

答えて

2

マイク、私にはあなたがUITabBarを求めているようです。どのくらい前から、クライアントが動的タブバーを必要とする状況にあったのですか?代表者はあなたの場合はこの場合親友です。

UITabBarDelegate:

– tabBar:willBeginCustomizingItems: 
– tabBar:didBeginCustomizingItems: 
– tabBar:willEndCustomizingItems:changed: 
– tabBar:didEndCustomizingItems:changed: 
– tabBar:didSelectItem: required method 

UITabBarControllerDelgate

Managing Tab Bar Selections 
– tabBarController:shouldSelectViewController: 
– tabBarController:didSelectViewController: 
Managing Tab Bar Customizations 
– tabBarController:willBeginCustomizingViewControllers: 
– tabBarController:willEndCustomizingViewControllers:changed: 
– tabBarController:didEndCustomizingViewControllers:changed: 

これは、あなたが何かがタブバー上にあるときに行われるアクションを管理できるようになります。

また、あなたは実際に私はこれがあなたの役に立てば幸いビューコントローラ

UIViewController * controller =  [myTabBarController.tabBar.items objectAtIndex:kObjectIndex]; 

UIImage *someImage = [UIImage imageNamed:@"some_icon_on.png"]; 

UITabBarItem *someTabBarItem = [[UITabBarItem alloc] initWithTitle:NSLocalizedString (@"SomeTabBarTitle",@"") image:someImage tag:kObjectIndex]; 


controller.tabBarItem = someTabBarItem; 

にタブバーの項目を変更することにより、それを除去することなく、タブバー上のアイコンを変更することができます。運が良かった!

+1

ソリューションが機能しました。ただし、代わりにmyTabBarController.tabBar.itemsはmyTabBarController.viewControllersである必要があります。 – user523234

+0

のソリューションには数年経ちましたので、APIが変更された可能性があります。それを指摘してくれてありがとう! – Pacu

関連する問題