2012-01-19 18 views
31

Quiero establecer título a elemento de pestaña programaticamente, pero no funciona. Mi código es el siguiente:¿Cómo establecer el título del elemento de barra de pestañas programáticamente en el objetivo c?

- (IBAction)tab1Click:(id)sender { 
    myTabBarController = [[UITabBarController alloc] init];   
    view2Controller = [[View2Controller alloc] init]; 
    [view2Controller setTitle:@"title"]; 
    view3Controller = [[View3Controller alloc] init]; 
    deneme = [[ViewController alloc] init]; 

    myTabBarController.viewControllers = [NSArray arrayWithObjects:deneme, view2Controller,view3Controller, nil]; 
    [self.view addSubview:myTabBarController.view];  
    myTabBarController.selectedIndex=1; 
} 
+0

¿Dónde la defines? – Legolas

+0

He editado mi pregunta, compruebe ahora –

Respuesta

4
[view2Controller setTitle:@"ImATitle"]; 

podría ser lo que buscas

edición: bien Acabo de probar esto y def funciona para mí así que darle una oportunidad

UINavigationController *nav1 = [[UINavigationController alloc] init]; 
myViewController *myView = [[myViewController alloc] init]; 
//myView.title = @"Title"; //prob not needed 
[nav1 pushViewController: myView animated:NO]; 
UITabBarItem *item = [[UITabBarItem alloc] initWithTitle:@"Title" image:[UIImage  imageNamed:@"title.png"] tag:0]; 
nav1.tabBarItem = item; 
UITabBarController *tbc = [[UITabBarController alloc] init]; 
tbc.viewControllers = [NSArray arrayWithObjects:nav1, nil]; 
+0

no funcionó aún –

+0

http://stackoverflow.com/questions/6361010/set-uitabbaritem-title-programmatically – glogic

+0

Es el mismo mi código ...: S –

3

intente esto

[(UIViewController *)[tabBarController.viewControllers objectAtIndex:Index] setTitle:@"Title"]; 

o también se puede establecer por cuenta del bar de esta manera

UITabBarItem *tabItem = [[[tabBarController tabBar] items] objectAtIndex:INDEX]; 
[tabItem setTitle:@"TITLEe"]; 
+0

A juzgar por la documentación, no hay forma de establecer el título de un elemento de la barra de pestañas después de crearlo. Necesitas hacer uno nuevo en su lugar. – Caleb

4

El título que aparece en un elemento de la barra de pestañas dado se determina por ejemplo, el correspondiente controlador de vista de UITabBarItem. Sin embargo, esos no son mutables ... si desea cambiar el título (o imagen, o etiqueta), debe crear un nuevo elemento y asignarlo al controlador de visualización.

UITabBarItem *item2 = [[UITabBarItem alloc initWithTitle:@"someTitle" image:someImage tag:0]; 
viewController2.tabBarItem = item2; 
+0

Intento esto pero no funcionó - (IBAction) tab1Click: (id) remitente { myTabBarController = [[UITabBarController alloc] init]; view2Controller = [[View2Controller alloc] init]; view3Controller = [[View3Controller alloc] init]; UITabBarItem * item2 = [[UITabBarItem alloc] initWithTitle: @ "someTitle" image: nil tag: 0]; view2Controller.tabBarItem = item2; myTabBarController.viewControllers = [NSArray arrayWithObjects: deneme, view2Controller, view3Controller, nil]; [self.view addSubview: myTabBarController.view]; myTabBarController.selectedIndex = 1; } –

2

primera de declarar UITabBarDelegate

- (IBAction)tab1Click:(id)sender { 

    myTabBarController = [[UITabBarController alloc] init]; 

    myTabBarController.delegate = self; 

    view2Controller = [[View2Controller alloc] init]; 
    [view2Controller setTitle:@"title"]; 
    view3Controller = [[View3Controller alloc] init]; 
    deneme = [[ViewController alloc] init]; 
    dename.title = @"Dename"; 
    view2Conreoller.title = @"View2"; 
    view3Conreoller.title = @"View3"; 
    myTabBarController.viewControllers = [NSArray arrayWithObjects:deneme, view2Controller,view3Controller, nil]; 
    [self.view addSubview:myTabBarController.view];  
    myTabBarController.selectedIndex=1; 
} 

e incluso se pueden establecer las imágenes de tabulación con

view2Controller.tabBarItem.image = [UIImage imageNamed:@"misle.png"]; 
+0

no es trabajo :( –

8

Una manera fácil de hacer esto: en su viewController2 's viewDidLoad método, establecen self.title = @"MyTitle";

+1

no es trabajo ... :( –

+0

Por supuesto, DEBERÍA funcionar! X- ( – Legolas

+1

El problema con esto es que si está en el viewDidLoad para viewcontroller2, solo se disparará una vez Se ha hecho clic en la pestaña viewController2. En ese punto se mostrará correctamente, pero para corregirlo de modo que se muestre correctamente desde el principio, us: [self.tabBarController.tabBar.items objectAtIndex: 1] setTitle: NSLocalizedString (@ "BotonMapas", @ "comentario")]; como Aitul aparece como su respuesta –

54

Puedes configura todos los íconos UITabBar de una manera fácil. Puede hacer esto en su método viewWillAppear::

[[self.tabBarController.tabBar.items objectAtIndex:0] setTitle:NSLocalizedString(@"BotonMapas", @"comment")]; 

[[self.tabBarController.tabBar.items objectAtIndex:1] setTitle:NSLocalizedString(@"BotonRA", @"comment")]; 

[[self.tabBarController.tabBar.items objectAtIndex:2] setTitle:NSLocalizedString(@"BotonEstado", @"comment")]; 

[[self.tabBarController.tabBar.items objectAtIndex:3] setTitle:NSLocalizedString(@"LabelInfo", @"comment")]; 

Swift 3.1 Solución

self.tabBarController?.tabBar.items?[0].title = NSLocalizedString("BotonMapas", comment: "comment") 
self.tabBarController?.tabBar.items?[1].title = NSLocalizedString("BotonRA", comment: "comment") 
self.tabBarController?.tabBar.items?[2].title = NSLocalizedString("BotonEstado", comment: "comment") 
self.tabBarController?.tabBar.items?[3].title = NSLocalizedString("LabelInfo", comment: "comment") 
+6

Qué ver 'viewWillAppear del controlador:. – fatuhoku

+0

' ¿Qué hay de establecer un título para cada UIViewController – alexmorhun

+2

?? ¡Gracias! Fue útil. – Raja

28

Cómo lo hago en el controlador de vista real (no la App Delegado):

// set tab title 
self.title = @"Tab Title"; 
// optionally, set different title for navigation controller 
self.navigationItem.title = @"Nav Title"; 
// Note: self.title will reset Nav Title. Use it first if you want different titles 
+1

+1 para configurar un título diferente para el controlador de navegación! Lo necesitaba para mayúsculas, solo en la barra de navegación. – nmdias

0

Si llama desde dentro de un UIViewController incrustado, puede cambiar el título de la barra de pestañas principal con:

self.tabBarController.title = @ "My Title.";

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


    UITabBarController *tb=[[UITabBarController alloc]init]; 
    UIStoryboard *sb=[UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    UIViewController *vc1=[sb instantiateViewControllerWithIdentifier:@"View1"]; 
    UIViewController *vc2=[sb instantiateViewControllerWithIdentifier:@"View2"]; 

     //To Set Title for UIViewController 

     [vc1 setTitle:@"View1"]; 
     [vc2 setTitle:@"View2"]; 


    NSArray *vController=[[NSArray alloc]initWithObjects:vc1,vc2,nil]; 
    tb.viewControllers=vController; 
    self.window.rootViewController=tb; 
    [self.window makeKeyAndVisible]; 


    return YES; 
} 
Cuestiones relacionadas