アプリが読み込まれたとき最後にアプリを実行したときにユーザーが設定した保存設定に基づいてタブの画像を変更します。ユーザーがタブの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;
をご利用いただけません。どのようにこれを行うにはどのようなアイデア?
主な利点は、コードを読みやすくすることです。 –