Pregunta

Me gustaría tener una imagen personalizada seleccionada cuando un usuario selecciona un elemento de la barra de pestañas, por defecto se selecciona como el azul como pero le gustaría tener un color verde en su lugar. algo así como debajo de los pensamientos?

alt text

¿Fue útil?

Solución

Sólo encontró mi solución. Básicamente, una subclase UITabItem y puse esto en el controlador de navegación:

-(void) viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    CustomTabBarItem *tabItem = [[CustomTabBarItem alloc] initWithTitle:@"Events" image:[UIImage imageNamed:@"tabIcon.png"] tag:0];
    tabItem.customHighlightedImage=[UIImage imageNamed:@"tabIconSelected.png"];
    self.tabBarItem = tabItem;
    [tabItem release];
    tabItem=nil;            
}

Esto es lo que las miradas de clase CustomTabBarItem como:

@interface CustomTabBarItem : UITabBarItem
{
    UIImage  *customHighlightedImage;
}

@property (nonatomic, retain) UIImage *customHighlightedImage;

@end

aplicación:

#import "CustomTabBarItem.h

@implementation CustomTabBarItem

@synthesize customHighlightedImage;

- (void)dealloc {
    [customHighlightedImage release];
    customHighlightedImage=nil;
    [super dealloc];
}

-(UIImage *)selectedImage {
    return self.customHighlightedImage;
}

@end

Otros consejos

En iOS 6 Tengo cambiar la imagen seleccionada como tabbatitem -

en TabBar controlador método delegado

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

{
    if([tabBarController selectedIndex] == 0)
    {
        [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];
    }    
}

a través de este se puede cambiar su imagen.

o puede utilizar directamente en los controladores de vista init (o viewWillAppear) método, como

        [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];

Espero que esto te ayudaré.

Sólo tiene que añadir algunas vistas personalizadas (utilizando insertSubview:. AtIndex :) cuando se llama a los métodos-delegado UITabBarController

Ejemplo:

– (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    [tabBarController.tabBar insertSubview:someView atIndex:someIndex];
}

Puede intentar cambiar someIndex a sí mismo hasta que usted tiene el resultado que desea.

Esto no es compatible oficialmente en el SDK. Usted puede ser capaz de investigar y ajustar puntos de vista de la pestaña en tiempo de ejecución, pero corre el riesgo de un rechazo por parte de Apple.

Editar:. Para completar, debería mencionar que la otra opción es a rodar su propia UITabBar

Para IOS5 y hacia arriba, sólo puede hacer esto:

rootTabBarController.tabBar.selectedImageTintColor = [UIColor greenColor];

Creo que ahora se puede hacer esto con:

[[[[self tabBar] items] objectAtIndex:0] setFinishedSelectedImage:nil withFinishedUnselectedImage:nil];

Al utilizar guiones gráficos sólo tiene que seleccionar su TabBar de tabBarController y luego cambiar la imagen Tinte en el inspector de identidad. Esto también debe trabajar con XIBs.

Mira aquí por una imagen que describe el todos

En AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions (NSDictionary *)launchOptions {

[[UITabBar appearance] setSelectedImageTintColor:[UIColor redColor]]; 

return YES;

}

Esto le dará un color rojo, cambiar el color con el que desea whitecolor, etc .. bluecolor

En mi viewDidLoad: de UITabBarController, basado en la respuesta de Rizzu:

for (int i = 0; i < [self.viewControllers count]; i++)
{
    UIViewController* viewController = [self.viewControllers objectAtIndex:i];

    if(i == 0)
    {
        [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"btn_list_all_hover.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"btn_list_all.png"]];
    }
    else if(i == 1)
    {
        [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"btn_settings_hover.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"btn_settings.png"]];
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top