2010-03-25 11 views
10

He creado un UITabBar y UITabBarItems sin UITabBarController en él, ahora quiero saber cómo hacer una acción al hacer clic en UITabBarItem. ¿Cuál es el método que debo usar para la acción en UITabBarItem?Cómo crear una acción para un UITabBarItem?

+0

De acuerdo con las pautas de interfaz humana, las barras de pestañas son para cambiar de vista. ¿Estás seguro de que no quieres usar una barra de herramientas? –

Respuesta

2

¿Estás utilizando un UINavigationController? Si es así, de la subclase activa controlador de vista a obtener el navigationItem y agregar los botones a la misma, por ejemplo .:

- (void) viewWillAppear:(BOOL)animated; 
{ 
    [super viewWillAppear: animated]; 
    UIBarButtonItem * leftButtonItem = [[[UIBarButtonItem alloc] initWithTitle: @"Don't Show Again" style: UIBarButtonItemStyleBordered target: self action: @selector(permanentlyCloseWelcomeView)] autorelease]; 
    [[self navigationItem] setLeftBarButtonItem: leftButtonItem]; 
} 
+0

no ... no estoy usando ningún controlador ... – suse

20

No se puede establecer una acción sobre un objeto UITabBarItem directamente. En cambio, su controlador de vista debe implementar la UITabBarDelegate método siguiente:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item; 

Este método se llama cuando el usuario selecciona una ficha (es decir UITabBarItem).

+0

esto funcionó para mí, pero recuerde configurar el delegado del tabbar en 'self' en viewdidload() – crackles

-2

hay un método mejor que didSelectItem: para cada TabBarItem se crea una acción:
[item1 setAction:@selector(pressItem1:)];
[item2 setAction:@selector(pressItem2:)];
[item3 setAction:@selector(pressItem3:)];
[item4 setAction:@selector(pressItem4:)];
y entonces usted puede utilizar las nuevas acciones:

-(void)pressItem1:(UITabBarItem *) item1 {<br/> 
    // Here comes your code which<br/> 
    // occurs after pressing item1.<br/> 
} 

que funciona para mí

+1

está usando una API privada. Apple no lo aprobará – user102008

+0

Parece que sí. Ita una API privada. – Dilshan

1

Puede usted salirse con la suya usando instancias de UIToolbar y UIBarButtonItem en su lugar? Podría ser más sencillo.

toolBar = [[UIToolbar alloc] init]; 
newPlayerItem = [[UIBarButtonItem alloc] initWithTitle:@"+" 
            style:UIBarButtonItemStyleBordered 
            target:self 
            action:@selector(newPlayer:)]; 

NSArray *toolBarItemsArray = [[NSArray alloc] initWithObjects:newPlayerItem, nil]; 
[toolBar setItems:toolBarItemsArray]; 
[toolBarItemsArray release]; 
Cuestiones relacionadas