2012-07-17 65 views
2

我正在使用TabbarController。当我在第一个选项卡中禁用所有其他tabItem模式,并在第一个选项卡视图控制器中有一个按钮时,单击该按钮时,它应该移动到第二个tabitem。我已经实现了setselectedindex,但没有改变。如何在iPhone中手动更改TabItem?

- (void)clinicBtnTapped 
{   
    enteredSecondTab==YES; 
    CustomTabBar *tabbar=[[CustomTabBar alloc] init]; 

    [self.tabBarController setSelectedIndex:1]; 

    AppSys_SplitView *apptmtSys=[[AppSys_SplitView alloc] init]; 

    [tabbar tabBarController:tabbar.tabBarController shouldSelectViewController:apptmtSys]; 
    tabindex=1; 
    [tabbar tabBarController:tabbar.tabBarController didSelectViewController:appsys]; 

} 

应当选择视图控制器

- (BOOL)tabBarController:(UITabBarController *)tabBarControlle shouldSelectViewController:(UIViewController *)viewController{ 

    tabindex = [[tabBarControlle viewControllers] indexOfObject:viewController]; 
    NSLog(@"index %d",index); 

    for(UIImageView *view in[self.view subviews]){ 

     [view removeFromSuperview]; 
    } 
     tabBarController.imgV.frame=CGRectMake(0, 717, 1024, 53); 

    switch (tabindex) { 

     case 0: 

      enteredFirstTab = YES; 
      enteredSecondTab = NO; 
      enteredThirdTab = NO; 
      enteredFourthTab = NO; 
      tabBarController.imgV.image=[UIImage imageNamed:@"select_TrackClinic_icon.png"]; 


      return YES; 
      break; 

     case 1:    
      if(enteredSecondTab == YES) 
      { 
       enteredFirstTab = NO; 
       enteredSecondTab = YES; 
       enteredThirdTab = NO; 
       enteredFourthTab = NO; 
       tabBarController.imgV.image=[UIImage imageNamed:@"select_Application_icon.png"]; 
       return YES; 
      } 
      else 
      { 
       return YES; 
      } 



      break; 


     case 2: 

      return NO; 

      enteredFirstTab = NO; 
      enteredSecondTab = NO; 
      enteredThirdTab = YES; 
      enteredFourthTab = NO; 
      tabBarController.imgV.image=[UIImage imageNamed:@"select_regularOnsite_icon.png"]; 

      break; 

     case 3: 

      return NO; 

      enteredFirstTab = NO; 
      enteredSecondTab = NO; 
      enteredThirdTab = NO; 
      enteredFourthTab = YES; 
      tabBarController.imgV.image=[UIImage imageNamed:@"select_resultUpdate_icon.png"]; 
      break; 

     default: 

      break; 

    }  

} 
+0

你这样做的方式似乎真的很复杂。你不需要为'n'-tab控制器维护'n'变量。 无论如何,'setSelectedIndex:'应该做你想做的。也许问题在于'enteredSecondTab == YES;'中有两个等号吗? – 2012-07-17 11:25:09

+0

我已经更改为单一sign.but但我仍然没有得到结果 – 2012-07-17 11:36:05

回答

1

在这里我可以给你一些教程实现定制的TabBar

Delegate.h文件

@interface cTabBarAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> 
@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController; 
@property (nonatomic, retain) IBOutlet UIImageView *imgV; 
@end 

Delegate.m文件

@implementation cTabBarAppDelegate 

@synthesize window=_window; 
@synthesize tabBarController=_tabBarController; 
@synthesize imgV = _imgV; 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 
    // Add the tab bar controller's current view as a subview of the window 
    self.tabBarController.delegate=self; 
    self.imgV.frame=CGRectMake(0, 425, 320, 55); 
    [self.tabBarController.view addSubview:self.imgV]; 
    self.tabBarController.selectedIndex=0; 
    self.window.rootViewController = self.tabBarController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{ 
    NSUInteger index=[[tabBarController viewControllers] indexOfObject:viewController]; 

    switch (index) { 
     case 0: 
      self.imgV.image=[UIImage imageNamed:@"tBar1.png"]; 
      break; 
     case 1: 
      self.imgV.image=[UIImage imageNamed:@"tBar2.png"]; 
      break; 
     case 2: 
      self.imgV.image=[UIImage imageNamed:@"tBar3.png"]; 
      break; 
     case 3: 
      self.imgV.image=[UIImage imageNamed:@"tBar4.png"]; 
      break; 
     case 4: 
      self.imgV.image=[UIImage imageNamed:@"tBar5.png"]; 
      break; 
     default: 
      break; 
    } 

    return YES; 
} 

下面的代码放入viewcontroller.m

AppDelegate *delegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; 

    SearchVctr *viewController1 = [[SearchVctr alloc] initWithNibName:@"SearchVctr" bundle:nil]; 
    UINavigationController *navForRentResidental= [[UINavigationController alloc]initWithRootViewController:viewController1]; 

    UIViewController *viewController2 = [[FavouriteVctr_iphone alloc] initWithNibName:@"FavouriteVctr_iphone" bundle:nil]; 
    UINavigationController *navForFavorite= [[UINavigationController alloc]initWithRootViewController:viewController2]; 

    UIViewController *viewController3 = [[LoginAndRegisterVctr alloc] initWithNibName:@"LoginAndRegisterVctr" bundle:nil]; 
    UINavigationController *navForLogin= [[UINavigationController alloc]initWithRootViewController:viewController3]; 
    navForLogin.navigationBar.hidden=TRUE;  

    UIViewController *viewController4 = [[ContactUsVctr alloc] initWithNibName:@"ContactUsVctr" bundle:nil]; 
    UINavigationController *navForContact= [[UINavigationController alloc]initWithRootViewController:viewController4]; 

    UIViewController *viewController5 = [[MoreVctr_iphone alloc] initWithNibName:@"MoreVctr_iphone" bundle:nil]; 
    UINavigationController *navForMore= [[UINavigationController alloc]initWithRootViewController:viewController5]; 

    navForContact.navigationBar.hidden=TRUE; 
    navForMore.navigationBar.hidden=TRUE; 
    navForLogin.navigationBar.hidden=TRUE; 
    navForFavorite.navigationBar.hidden = TRUE; 

    if([sender tag] == 1){ 
     delegate.tabBarController.viewControllers = [NSArray arrayWithObjects:navForRentResidental, navForFavorite, navForLogin, navForContact, navForMore, nil]; 
     delegate.tabBarController.selectedIndex = 3; 
     delegate.imgV.image=[UIImage imageNamed:[NSString stringWithFormat:@"t4.png"]]; 
     delegate.tabBarController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
     [self presentModalViewController:delegate.tabBarController animated:YES]; 
    }else if([sender tag] == 2){ 
     UIViewController *viewController5 = [[AboutVctr alloc] initWithNibName:@"AboutVctr" bundle:nil]; 
     delegate.tabBarController.viewControllers = [NSArray arrayWithObjects:navForRentResidental, navForFavorite, navForLogin, navForContact, viewController5, nil]; 
     delegate.tabBarController.selectedIndex = 4; 
     delegate.imgV.image=[UIImage imageNamed:[NSString stringWithFormat:@"t5.png"]]; 
     delegate.tabBarController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
     [self presentModalViewController:delegate.tabBarController animated:YES]; 
    } 
     else if([sender tag] == 3){ 
     UIViewController *viewController5 = [[ServicesVctr alloc] initWithNibName:@"ServicesVctr" bundle:nil]; 
     UINavigationController *navcontroller= [[UINavigationController alloc]initWithRootViewController:viewController5]; 
     navcontroller.navigationBar.hidden=TRUE; 
     delegate.tabBarController.viewControllers = [NSArray arrayWithObjects:navForRentResidental, navForFavorite, navForLogin, navForContact, navcontroller, nil]; 
     delegate.tabBarController.selectedIndex = 4; 
    delegate.imgV.image=[UIImage imageNamed:[NSString stringWithFormat:@"t5.png"]]; 
     delegate.tabBarController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
     [self presentModalViewController:delegate.tabBarController animated:YES]; 
    } 
    else if([sender tag] == 4){ 
     delegate.tabBarController.viewControllers = [NSArray arrayWithObjects:navForRentResidental, navForFavorite, navForLogin, navForContact, navForMore, nil]; 
     delegate.tabBarController.selectedIndex = 2; 
     delegate.imgV.image=[UIImage imageNamed:[NSString stringWithFormat:@"t3.png"]]; 
     delegate.imgV.image=[UIImage imageNamed:[NSString stringWithFormat:@"t3.png"]]; 
     delegate.tabBarController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
     [self presentModalViewController:delegate.tabBarController animated:YES]; 
    } 
     else if([sender tag] == 5){ 
     delegate.tabBarController.viewControllers = [NSArray arrayWithObjects:navForRentResidental, navForFavorite, navForLogin, navForContact, navForMore, nil]; 
     delegate.tabBarController.selectedIndex = 0; 
     delegate.imgV.image=[UIImage imageNamed:[NSString stringWithFormat:@"t1.png"]]; 
     delegate.imgV.image=[UIImage imageNamed:[NSString stringWithFormat:@"t1.png"]]; 
         delegate.tabBarController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
     [self presentModalViewController:delegate.tabBarController animated:YES]; 

    } 

此代码可以帮助开发。

+0

我改变了tabitem按钮单击。现在我需要更改为tabbar设置的图像 – 2012-07-18 10:40:46

+0

请参考http://bit.ly/NLv64P教程中的标签栏图像也在这里教程也。 – 2012-07-18 10:45:33

相关问题