2012-04-30 45 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

在這裏我創建了一個自定義標籤欄,它有四個按鈕。按鈕由圖像組成,並且我使用了一個常量文件。這裏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

相關問題