2010-11-26 17 views
1

アプリが読み込まれたとき最後にアプリを実行したときにユーザーが設定した保存設定に基づいてタブの画像を変更します。ユーザーがタブのViewControllerのViewDidLoadメソッドを実行するタブをクリックすると、イメージを変更できます。以下を参照:iPhone、UITabBarItem:アプリ起動時にタブバーの画像を動的に変更する

UITabBarItem *tabItem; 
if (condition = YES) { 
    tabItem = [[UITabBarItem alloc] initWithTitle:@"Filter" image:[UIImage imageNamed:@"filter plus.png"] tag:self.view.tag]; 
} 
else { 
    tabItem = [[UITabBarItem alloc] initWithTitle:@"Filter" image:[UIImage imageNamed:@"filter.png"] tag:self.view.tag]; 
} 
self.navigationController.tabBarItem = tabItem; 
[tabItem release]; 
[super viewDidLoad]; 

しかし、私はそれをロードするときにアプリのルートビューコントローラにそのタブのUITabBarItemにアクセスして変更する方法を見つけ出すことができませんでした。以下のルートビューコントローラのviewdidloadメソッドを参照してください。

UITabBarItem *tabItem; 
if (condition = YES) { 
    tabItem = [[UITabBarItem alloc] initWithTitle:@"Filter" image:[UIImage imageNamed:@"filter plus.png"] tag:self.view.tag]; 
} 
else { 
    tabItem = [[UITabBarItem alloc] initWithTitle:@"Filter" image:[UIImage imageNamed:@"filter.png"] tag:self.view.tag]; 
} 
// get the view controller of the tab I want to change 
MyViewController *vc = [self.tabBarController.viewControllers objectAtIndex:2]; 
ft.tabBarItem = tabItem; 
[tabItem release]; 
[super viewDidLoad]; 

これは私がuitabbaritemにアクセスし、変更するには、複数の他の方法を試してみましたが、何も働いていない動作しませんでした。ルートビューコントローラでUITabBarItemとUINavigationControllerにIBOutLetsを作成しようとしました。

// tb is an iboutlet to the UITabBarItem 
self.tb = tabItem; 

// nc is an iboutlet to the UINavigationController 
self.nc.tabBarItem = tabItem; 

をご利用いただけません。どのようにこれを行うにはどのようなアイデア?

答えて

2

私はそれを理解しました。私はちょうどUITabBarItemのsetImageメソッドを呼び出す必要がありました。

//UITabBarItem *filterTab = [self.tabBar.items objectAtIndex:2]; 
if (condition == YES) { 
    [[self.tabBar.items objectAtIndex:2] setImage:[UIImage imageNamed:@"filter plus.png"]]; 
    // [filterTab setImage:[UIImage imageNamed:@"filter plus.png"]];   
} 
else { 
    [[self.tabBar.items objectAtIndex:2] setImage:[UIImage imageNamed:@"filter.png"]]; 
    //[filterTab setImage:[UIImage imageNamed:@"filter.png"]]; 
} 

続きを読む質問:最初にポインタにタブバーアイテムを割り当ててから画像を設定する理由はありますか?

UITabBarItem *filterTab = [self.tabBar.items objectAtIndex:2]; 
[filterTab setImage:[UIImage imageNamed:@"filter plus.png"]]; 

対1行で次のようにしますか?

私は同じように選択tabbatitemの画像を変更している、あなたはこの1つを試してみる必要があると思う、これが役立つことを願って、

[[self.tabBar.items objectAtIndex:2] setImage:[UIImage imageNamed:@"filter.png"]]; 
+1

主な利点は、コードを読みやすくすることです。 –

1

- タブバーコントローラのデリゲートメソッドで

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

{ 
    if([tabBarController selectedIndex] == 0) 
    { 
     [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]]; 
    }  
} 

をこれによりイメージを変更することができます。

それとも、

 [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]]; 

ように、あなたのビューコントローラのinit(またはViewWillAppear)メソッド内で直接使用することができますが、それを試してみてください!!!!

関連する問題