tab icon bar iphone cocoa-touch uikit uitabbarcontroller

iphone - icon - No seleccione pestañas en una UITabBar



uitabbarcontroller programmatically swift (7)

Estoy tratando de seleccionar ninguna pestaña en mi aplicación. Al principio, se selecciona la primera pestaña, pero me gustaría deseleccionarla para que no se seleccionen pestañas.

No me preguntes por qué, ¡es solo así que el cliente lo quiere! jeje

¡Gracias por tu ayuda!

PD: ya lo intenté:

// rootController = UITabBarController rootController.tabBar.selectedItem = 0; rootController.tabBar.selectedItem = nil; [rootController setSelectedIndex:[rootController.items objectAtIndex:0]]; [rootController setSelectedIndex:nil]; [rootController setSelectedIndex:0]; // That one works : (but I can''t select 0 or -1 for instance) [rootController setSelectedIndex:2];

¿Algunas ideas? ¡Gracias de nuevo!


De la documentación :

Este controlador de vista es aquel cuya vista personalizada se muestra actualmente en la interfaz de la barra de pestañas. El controlador de vista especificado debe estar en la matriz viewControllers. La asignación de un nuevo controlador de vista a esta propiedad cambia la vista que se muestra actualmente y también selecciona una pestaña apropiada en la barra de pestañas. Cambiar el controlador de vista también actualiza la propiedad selectedIndex en consecuencia. El valor predeterminado de esta propiedad es nulo.

Entonces, asumiría que necesitas [rootController setSelectedViewController: nil]; .

Actualizar:

Para aclarar un poco,

[self.tabBarController setSelectedViewController:nil];

También hay documentación sobre cómo evitar la selección de pestañas que podrían ser útiles.


Puede deseleccionar todos los elementos de la barra de pestañas si está utilizando una instancia de UITabBar sin UITabBarController uno.

En tal caso, debajo del código funciona bien.

[tabBar setSelectedItem:nil];

Si UITabBar es parte de UITabBarController, la aplicación se bloqueará con excepción:

''La modificación directa de una barra de pestañas administrada por un controlador de la barra de pestañas no está permitida''.

En otras palabras, si desea que esto funcione, debe administrar las rutinas de tabbar manualmente sin controlador.


Finalmente logré hacer esto usando el siguiente código:

DefaultView *defaultView = [[DefaultView alloc]initWithNibName:@"DefaultView" bundle:[NSBundle mainBundle]]; [self.tabBarController setSelectedViewController:nil]; [self.tabBarController setSelectedViewController:defaultView];

Tenga en cuenta que solo hace [self.tabBarController setSelectedViewController:nil]; no hará nada TIENE QUE especificar un controlador de vista. Esta vista Controlador se mostrará sin el icono de barra de herramientas seleccionada. Al seleccionar las otras opciones de TabBar, desaparecerá la vista predeterminada y se cargará la vista requerida.


Me encontré con esta pregunta y en realidad es muy simple:

tabBarController.selectedViewController = viewController;

Esto es algo similar a la respuesta de HG, pero no es necesario establecer el controlador de vista seleccionado en cero.


¿Hay mejores métodos?

use [self.tabBarController setSelectedViewController:nil], Warning : "-[UITabBarController setSelectedViewController:] only a view controller in the tab bar controller''s list of view controllers can be selected."


Es mejor cambiar la imagen seleccionada cuando lo desee y ocultarla o mostrarla según sus necesidades. Aquí mi pedazo de código que podría ayudar a entender:

-(void)viewWillAppear:(BOOL)animated{ if ([[NSUserDefaults standardUserDefaults]integerForKey:@"flagAsk"]) { UITabBarItem *firstTab = [self.tabBarController.tabBar.items objectAtIndex:0]; firstTab.selectedImage = [[UIImage imageNamed:@"Ask2"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; vieToHide.hidden=YES; } else{ UITabBarItem *firstTab = [self.tabBarController.tabBar.items objectAtIndex:0]; firstTab.selectedImage = [[UIImage imageNamed:@"Ask"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; vieToHide.hidden=NO; } }


Creo que rootController.tabBar.selectedItem = 0;

está mal lo que sea que hayas intentado. Porque cuando configuras selectedItem=0 , entonces seguro que tomará el primer tabBarItem de tabBarController .