2012-04-30 5 views
0

TabBarItemのデフォルトの効果を変更したい、アイテムを選択して選択解除した後に変更したい。この方法を使ってios5以降のバージョンでこの問題を解決しました。UITabBarItemsを変更するにはどのようにデフォルトでiPhoneで効果を選択解除しますか?

[mySchedule setFinishedSelectedImage:[UIImage imageNamed:@"myschedule.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"aboutus.png"]]; 

ですが、バージョン4以下では問題があります。バージョン4以下でこの問題をどのように解決したか教えてください。

+0

選択/選択解除後に画像を変更しますか? –

+0

はいArshad。しかし、ios4版です。 – python

答えて

1

ここでは、4つのボタンを持つカスタムのタブバーを作成しました。ボタンは画像で構成され、一定のファイルを取り込んでいます。 serivceImg、contactImgなどは、.hファイルで宣言されたUIImageViewです。また、.hファイルに代理人としてUITabBarControllerDelegateを追加することを忘れないでください。

-(void)setUpTabBar { 

tabBar = [[UITabBarController alloc] init]; 

Services *firstViewController = [[Services alloc]init]; 
firstViewController.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:1]; 
UINavigationController *firstNavController = [[UINavigationController alloc]initWithRootViewController:firstViewController]; 

ContactUs *secondViewController = [[ContactUs alloc]init]; 
secondViewController.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:2]; 
UINavigationController *secondNavController = [[UINavigationController alloc]initWithRootViewController:secondViewController]; 

Bookings *thirdViewController = [[Bookings alloc]init]; 
thirdViewController.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:3]; 
UINavigationController *thirdNavController = [[UINavigationController alloc]initWithRootViewController:thirdViewController]; 

Reward *fourthViewController = [[Reward alloc]init]; 
fourthViewController.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemRecents tag:4]; 
UINavigationController *fourthNavController = [[UINavigationController alloc]initWithRootViewController:fourthViewController]; 

tabBar.viewControllers = [[NSArray alloc] initWithObjects:firstNavController, secondNavController, thirdNavController, fourthNavController, nil]; 
tabBar.delegate=self; 
tabBar.selectedIndex=0; 

[firstNavController release]; 
[firstViewController release]; 

[secondNavController release]; 
[secondViewController release]; 

[thirdNavController release]; 
[thirdViewController release]; 

[fourthNavController release]; 
[fourthViewController release]; 

serivceImg=[[UIImageView alloc]initWithFrame:CGRectMake(0, 432, 80, 49)]; 
serivceImg.image=[UIImage imageNamed:serviceHover]; 

contactImg=[[UIImageView alloc]initWithFrame:CGRectMake(81, 432,80, 49)]; 
contactImg.image=[UIImage imageNamed:tabContact]; 

bookingImg=[[UIImageView alloc]initWithFrame:CGRectMake(162, 432,80, 49)]; 
bookingImg.image=[UIImage imageNamed:tabBooking]; 

rewardImg=[[UIImageView alloc]initWithFrame:CGRectMake(243, 432, 80, 49)]; 
rewardImg.image=[UIImage imageNamed:tabReward]; 

[tabBar.view addSubview:serivceImg]; 
[tabBar.view addSubview:contactImg]; 
[tabBar.view addSubview:bookingImg]; 
[tabBar.view addSubview:rewardImg]; 

[[[UIApplication sharedApplication]keyWindow]addSubview:tabBar.view]; 

[serivceImg release]; 
[contactImg release]; 
[bookingImg release]; 
[rewardImg release]; 

} 

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController1{ 

    if (viewController1 == [tabBar.viewControllers objectAtIndex:0]) 

{ 

    serivceImg.image = [UIImage imageNamed:kserviceHover]; 
    contactImg.image=[UIImage imageNamed:ktabContact]; 
    bookingImg.image=[UIImage imageNamed:ktabBooking]; 
    rewardImg.image=[UIImage imageNamed:ktabReward]; 


} 

else if (viewController1 == [tabBar.viewControllers objectAtIndex:1]) 

{ 

    serivceImg.image = [UIImage imageNamed:ktabService]; 
    contactImg.image=[UIImage imageNamed:kcontactHover]; 
    bookingImg.image=[UIImage imageNamed:ktabBooking]; 
    rewardImg.image=[UIImage imageNamed:ktabReward]; 

} 

else if (viewController1 == [tabBar.viewControllers objectAtIndex:2]) 

{ 

    serivceImg.image = [UIImage imageNamed:ktabService]; 
    contactImg.image=[UIImage imageNamed:ktabContact]; 
    bookingImg.image=[UIImage imageNamed:kbookingHover]; 
    rewardImg.image=[UIImage imageNamed:ktabReward]; 

} 

else if (viewController1 == [tabBar.viewControllers objectAtIndex:3]) 

{ 

    serivceImg.image = [UIImage imageNamed:ktabService]; 
    contactImg.image=[UIImage imageNamed:ktabContact]; 
    bookingImg.image=[UIImage imageNamed:ktabBooking]; 
    rewardImg.image=[UIImage imageNamed:krewardHover]; 

} 

} 

これはあなたの問題を解決します。

0

イメージ名から.pngを削除します。

+0

これは問題ではありません。 .pngを削除しても、ios4以下のバージョンでは機能しません。 – python

関連する問題