Pregunta

Estoy construyendo una aplicación basada en la plantilla Utilidad de Xcode, a la que he añadido algunas más vistas. Mi estructura de la aplicación sería la siguiente:

  • MainView (el menú de aplicaciones)

    • vista lateral Flip (una calculadora)

    • UINavigationController

    • configuración de la vista

      • viewDidLoad: UITabBarController

                - Tab1 view (options)
                - Tab2 view (information text)
        

Me puede navegar correctamente desde mi MainView a mi modo de ver otra cara, que es también el punto de vista de la raíz del regulador de la navegación. Desde mi punto de vista otra cara, empujo una segunda vista de mi Navigation Controller (configuración de la vista) que está configurado para mostrar una UITabBarController, con dos pestañas, tan pronto como cargas (con viewDidLoad).

Si quito el UITabBarController, puedo regresar sin problemas a mi modo de ver otra cara utilizando "popViewController" de mis ajustes de la vista. El problema viene si me carga la UITabBarController en viewDidLoad en mis ajustes de la vista ... las pestañas funcionan perfectamente, pero no soy capaz de volver a mi modo de ver otra cara (vista raíz del regulador de la navegación) nunca más.

Me puede volver si uso la barra de navegación del regulador de la navegación, pero quiero configurar mis propios botones y tienen la barra de navegación oculta.

Hasta ahora he tratado de los métodos siguientes:

  • [self.navigationController popViewControllerAnimated: YES];

  • [self.navigationController popToRootViewControllerAnimated: YES];

  • [self.navigationController popToViewController: FlipSideViewController animado: YES];

Pero no parece funcionar. Los dos primeros simplemente no hacer nada (los restos de la pantalla como lo era), y el tercero no reconoce el "FlipsideViewController" (tal vez porque es un delegado de la MainViewController?).

¿Hay una manera de comprobar lo que está haciendo exactamente el botón "atrás" de la barra de navegación, si lo activo?

¿Debo utilizar delegados?

¿Puedo llamar a un método popViewController en mis ajustes de la vista desde cualquiera de los dos puntos de vista Tab?

Este es mi punto de vista otra cara:

- (IBAction)showSettingsView {
    SettingsViewController *controller = [[SettingsViewController alloc] initWithNibName:@"SettingsView" bundle:nil];
    controller.title = @"Settings";
    [self.navigationController pushViewController:controller animated:YES];
    [controller release];
}

Esta es mi configuración de la vista:

- (void)viewDidLoad {
    [super viewDidLoad];

    tabBarController = [[UITabBarController alloc] init];

    Tab1ViewController* vc1 = [[Tab1ViewController alloc] init];
    Tab2ViewController* vc2 = [[Tab2ViewController alloc] init];

    NSArray* controllers = [NSArray arrayWithObjects:vc1, vc2, nil];
    tabBarController.viewControllers = controllers;

    [self.view addSubview:tabBarController.view];
}

Y el método para volver en una de las vistas de fichas:

- (IBAction)backFromTab1View {
    [self.navigationController popToViewController:FlipSideViewController animated:YES];
}

Muchas gracias y lo siento si la pregunta es demasiado básico!

¿Fue útil?

Solución

De hecho, me resolvió el problema de la creación de mi propia UINavigationBar en la configuración de la vista y el uso de:

[self.view insertSubview:tabBarController.view belowSubview:myNavigationBar];

que inserta el resto de la vista por debajo de la barra de navegación y que todavía se puede utilizar para configurar un botón que aparece la vista y el retorno a la pantalla anterior.

Me tomó un tiempo para darse cuenta de las diferencias entre "addSubview" y "inserSubview + belowSubview". Lo siento por eso!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top