我正在使用TabbarController
。当我在第一个选项卡中所有其他tabItem处于禁用模式时,我在第一个选项卡视图控制器中有一个按钮,单击该按钮时它应移动到第二个tabitem。我已经实现了setselectedindex但没有改变。
- (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];
}
应该选择ViewController
- (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 :(得分:1)
在这里,我可以为您提供一些实现自定义标签栏的教程
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];
}
此代码可能有助于开发。