5

mi intención es implementar algo similar a la aplicación de configuración nativa de iPad. La configuración usa UITableViewController y, como tal, en la vista de detalles puede ver las subvistas, sin embargo, quiero poder presionar un controlador de vista mediante el botón de toque en mi vista de detalles.¿Cómo puedo presionar los controladores de vista en vista detallada de la muestra de Apple MultipleDetailViews?

Así que he tratado de extender la aplicación de la muestra MultipleDetailViews:
1) SecondDetailViewController tiene la propiedad navigationController (que es de sólo lectura) establece en nil ...
2) Así que he creado un nuevo UINavigationController y lo utilizó para empujar mis controladores, pero eso no funcionó.

Mi código:

if (!self.myNavigationController) { 
    self.myNavigationController = [[UINavigationController alloc] initWithRootViewController:self]; 
} 

FirstDetailViewController *controller = [[FirstDetailViewController alloc] initWithNibName:@"FirstDetailView" bundle:nil]; 

[[self myNavigationController] pushViewController:controller animated:YES]; 

[controller release], controller = nil; 

también trató simplemente init método de UINavigationController, pero no funciona tan bien.

¿Estoy intentando algo que no es posible sin implementar UISplitViewController personalizado? ¿Fui engañado por el código de muestra que para SecondDetailViewController tiene UINavigationBar?

Respuesta

0

Para poder hacer esto, debe presionar viewController en cada viewController en la matriz. De este modo:

[[self.appDelegate.splitViewController.viewControllers objectAtIndex:0] pushViewController:rootLevel1 animated:YES]; 
[[self.appDelegate.splitViewController.viewControllers objectAtIndex:1] pushViewController:detailLevel1 animated:YES]; 

de crédito y código: http://kshitizghimire.com.np/uisplitviewcontroller-multipledetailviews-with-navigation-controller/

+0

el enlace parece estar muerto, ¿tiene otra referencia? – matm

+0

[link] (http://kshitizghimire.com.np/uisplitviewcontroller-push-viewcontroller-in-master-and-detail/) prueba este. Su sitio web fue hecho el otro día. – DogEatDog

0

que estaba buscando la solución a un problema similar. En mi caso, quería que la tabla vista se vincule a varias vistas detalladas dependiendo de la selección. Podría superponer los datos en un controlador de vista, pero estaba buscando una mejor solución. Aquí esta lo que hice. Es simple y funciona mucho mejor que algunas de las opciones complejas y obsoletas que he encontrado hasta ahora.

simplemente me dio una identificación del guión gráfico en el inspector de identidad a la viewcontroller que quería aparecer en el DetailView ("segundo") y sobre didSelectRowAtIndexPath simplemente agregué:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
TimeDetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"second"]; 

[[self.splitViewController.viewControllers objectAtIndex:1] pushViewController:detail animated:YES]; 

    } 

Así que cuando alguien presiona una célula en la vista maestra, se presiona la vista de detalles.

Una simple instrucción if puede cambiar la vista que se muestra:

if ([[self.selfRootMenuArray objectAtIndex:indexPath.row] isEqual: @"Second Choice"]) { 
     TimeDetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"second"]; 

[[self.splitViewController.viewControllers objectAtIndex:1] pushViewController:detail animated:YES]; 

    else if ([[self.selfRootMenuArray objectAtIndex:indexPath.row] isEqual: @"First Choice"]) { 
     TimeDetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"first"]; 

[[self.splitViewController.viewControllers objectAtIndex:1] pushViewController:detail animated:YES]; 

    }; 

Usted puede simplemente utilizar los botones, interruptores o cualquier otra cosa en lugar de una vista de tabla, pero el punto es que mediante la adición de un "Storyboard ID" en el "Inspector identidad"

y simplemente instanciar el controlador de vista haciendo referencia al "Storyboard ID" y luego empujándolo al controlador de la vista dividida en el índice 1 (lado detalle) su simple y rápida

TimeDetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"second"]; 

[[self.splitViewController.viewControllers objectAtIndex:1] pushViewController:detail animated:YES]; 
Cuestiones relacionadas