2011-08-16 25 views
5

Tengo un controlador de barra de pestañas y cada pestaña consta de un controlador de navegación.¿Cómo acceder a View Controller desde el controlador de la barra de pestañas?

¿Cómo puedo acceder a un controlador de vista específico en un controlador de navegación en una pestaña para poder acceder a una propiedad específica del controlador de vista?

He probado el siguiente código:

//Get the navigation controller of the 3rd tab 
self.tabController.selectedViewController 
= [self.tabController.viewControllers objectAtIndex:2]; 

//Attempt to retrieve the viewcontroller I want from the tabcontroller 
SomeViewController *svc = (SomeViewController *)self.tabController.selectedViewController; 

//Attempting to access a BOOLEAN property in svc viewcontroller 
svc.someProperty = YES; 

falló El código anterior, ya que parece que "self.tabController.selectedViewController" me devuelve un controlador de navegación. ¿Cómo puedo extender el código para que pueda acceder a "svc.someProperty"?

Respuesta

1

Como el controlador de vista es una subvista del UINavigationController (SVC) devuelto, puede enviar el siguiente método [svc topViewController];. Eso debería devolverle el controlador de vista y luego debería poder acceder a la propiedad.

4

Si self.tabController.selectedViewController es su controlador de vista de navegación, a continuación, se puede acceder al controlador actualmente visibles usando:

visibleViewController

y el controlador de vista superior usando:

topViewController

Si esto no le permite llegar a SomeViewController, puede recorrer la lista de controladores que se encuentran en la pila del controlador de navegación:

viewControllers

+0

Sergio, he utilizado su respuesta, pero me da '0x0' para todos esos valores, a pesar de que estoy mirando a la selectedViewController. [¿Qué podría estar causando esto?] (Http://stackoverflow.com/q/7433189/266252) –

Cuestiones relacionadas