2012-05-21 14 views

Respuesta

30

Dijiste que su (raíz) inicial del controlador es una vista UITabBarController pero se está refiriendo a un controlador de vista con una controlador de navegación con un controlador de barra de pestañas. ¿Estás confundido en la jerarquía de tu controlador de vista?

edición:

si su controlador de vista raíz es en realidad sólo un controlador de la barra de pestañas y desea obtener la pestaña tercera Aquí está el código:

[[((UITabBarController *)self.window.rootViewController) viewControllers] objectAtIndex:2]; 
+0

Sin @interface visibles para 'UIViewController' declara el selector 'viewControllers' –

+2

sí, funciona. Soy tan estúpido. UITabBarController * tabBarController = (UITabBarController *) self.window.rootViewController; –

9
[self.tabBarController setSelectedIndex:2]; 
+2

Si bien es la respuesta más mínima que nunca, esta es la forma más simple y mejor para obtener el tabBarController. UITabBarController agrega una categoría a UIViewController que devuelve un UITabBarController si la vista está en uno, o NULL si no lo está. –

+1

¿Hay alguna forma de obtener el objeto (ver el controlador) en un índice seleccionado? –

7

Prueba esta manera

En cualquier controlador de vista

YourViewController *yourViewController= (YourViewController*) [self.tabBarController.viewControllers objectAtIndex:3]; 

esto devuelve el objeto del controlador de esa vista. Cúbralo a su controlador de vista y ya está listo para usarlo. carrera y Ir

+0

¿Cuál sería la versión Swift 3 de esta respuesta? –

3
UIViewController *loginViewController=self.window.rootViewController; 

    UITabBarController *controller=loginViewController.tabBarControllerObj; 

    UIViewController *selectedController=controller.selectedViewController; 

A partir de este obtendrá seleccionado controlador de vista.

Para conseguir todo controlador de vista simplemente reemplazar

NSArray *viewControllers = [controller viewControllers]; 
0

Swift 4,0

let viewC = self?.tabBarController.viewControllers.first // will give single Navigation Controller on index 0 
let viewC = self?.tabBarController?.viewControllers// will give array of Navigation Controller 

Además se puede comprobar la ViewController visible

if let nav = viewC as? UINavigationController { 
    if nav.visibleViewController is YourViewControllerName{ 
     // Do Code 
    } 
} 
Cuestiones relacionadas