2010-09-23 28 views
7

Estoy siguiendo este ejemplo: http://doronkatz.com/ipad-programming-tutorial-hello-world. Este ejemplo funciona muy bien.Agregar navigationcontroller a la vista de detalles en vista dividida

Ahora quiero 3 pestañas en la vista dividida y para cada pestaña un nuevo controlador de navegación. Pero no sé cómo implementarlo. voy a este código:

- (void)setDetailItem:(id)newDetailItem { 
if (detailItem != newDetailItem) { 
    [detailItem release]; 
    detailItem = [newDetailItem retain]; 

    // Update the view. 
    navigationBar.topItem.title = detailItem; 

    if ([detailItem isEqualToString:@"Test"]) { 
     TestViewController *testViewController = [[TestViewController alloc] initWithNibName:@"TestView" bundle:nil]; 
     [self.navigationController pushViewController:testViewController animated:NO]; 
     [mapViewController release]; 

    } 
    if ([detailItem isEqualToString:@"Test2"]) { 

    } 

} 

if (popoverController != nil) { 
    [popoverController dismissPopoverAnimated:YES]; 
}   

pero sé que en realidad no tengo que utilizar 'pushviewcontroller', sólo quiero un nuevo navigationcontroller partir de ese momento, y así para cada pestaña en el SplitView. ¿Cómo puedo lograr esto? Sé que es realmente básico, pero no puedo resolverlo.

Gracias.

+0

Aquí puede hacer esto mediante la adición de mando de navegación sencilla y añadir subvista a la vista base. Si encuentra algún problema, por favor hágamelo saber. Me encantaría resolver este problema por ti. – AppAspect

Respuesta

0

Si le entiendo correctamente, tiene un UISplitViewController, y desea tener tres UINavigationControllers como vistas de detalles. En cuyo caso, el siguiente trabajo si se aplica en su clase UISplitViewController:

if ([detailItem isEqualToString:@"Test"]) { 

     TestViewController *testViewController = [[TestViewController alloc] initWithNibName:@"TestView" bundle:nil]; 

     //since self.viewControllers is immutable, let's make our own temporary copy. 
     NSMutableArray *tempArray = [self.viewControllers mutableCopy]; 

     //switcheroo with the new view controller 
     [tempArray replaceObjectAtIndex:1 withObject:testViewController]; 

     // our new view controller is retained by the array, so let's release it 
     [testViewController release]; 

     //set the new array to be displayed 
     self.viewControllers = tempArray; 

     //clean up - out mutableCopy returns a retained object 
     [tempArray release]; 


    } 
2

Según entiendo su requerimiento, que desea un controlador de vista dividida como el controlador principal. El panel izquierdo seleccionará un elemento y la vista de detalles derecha para ese elemento contendrá 3 pestañas. Cada pestaña tendrá un controlador de navegación. La tienda de aplicaciones sigue un patrón similar a la vista de detalles.

Es importante estructurar sus controladores como un árbol.

  • raíz: split controlador de vista
    • vista de lista: controlador de mesa (MasterViewController para la selección de la fruta) vista
    • detalle: controlador de pestaña (toda la información sobre la sandía)
      • Tab1: control de navegación
        • página 1: primer controlador raíz raíz (historial de sandías)
      • Sep2: control de navegación
        • página 1: controlador de la raíz primera pestaña (mapa de granjas sandía)
      • Tab3: control de navegación
        • page3: primer controlador raíz pestaña (recetas sandía)

Con este patrón puede crear la estructura del controlador en viewDidLoad, pero luego cambiar el contenido de la página 1, 2, 3 al responder setDetailItem UINavigatorContoller tiene un mensaje popToRootViewControllerAnimated que puede restablecer la pila de controlador de navegación anterior para cada uno de los 3 controladores de navegación. Cuando comencé a aprender el desarrollo de ios, encontré que configurar las jerarquías de controlador en código es más fácil que usar el constructor de interfaz. IB es más rápido una vez que obtiene los conceptos. Aún puede crear un controlador de punta de IB para los controladores de vista de raíz de página1,2,3.

buena referencia: http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007457

Cuestiones relacionadas