iOS Saltar a vista diferente

Tengo una aplicación basada en la navigation. La vista raíz es una list de elementos. Desde esta vista raíz, puede tocar en una celda de tabla a la vista de detalle de un elemento. O puede ir a una vista de formulario para crear un nuevo elemento mediante el button 'Agregar' en la barra de navigation.

Mi pregunta es ¿cómo puedo saltar desde la vista de formulario a la vista de detalle una vez que se ha creado el nuevo object?

No quiero hacer clic en la vista de detalles en la parte superior de la vista de formulario porque quiero que la vista de la tabla raíz sea lo que el usuario vea después de presionar el button de navigation "atrás" en la vista de detalles.

He probado lo siguiente. Aparece en la vista raíz bien, pero no empuja la vista de detalle después de eso.

[context save:&error]; [self.navigationController popToRootViewControllerAnimated:NO]; // display detail view GoalDetailViewController *detailViewController = [[GoalDetailViewController alloc] initWithNibName:@"GoalDetailViewController" bundle:nil]; // Pass the selected object to the new view controller. detailViewController.goal = goal; [self.navigationController pushViewController:detailViewController animated:YES]; [detailViewController release]; 

Cualquier ayuda y dirección sería muy apreciada 🙂

¡Aclamaciones!

En general, implementaría el button Agregar usando un controller de vista que se muestra de manera modal.

 [self presentModalViewController:modalViewController animated:YES]; 

lo que significa que aparece en la parte inferior de la pantalla (ver agregar un contacto). Luego, cuando presionan hecho en la parte superior derecha, puede empujar el controller de vista de detalle en el controller de navigation sin animarlo, haciendo que el button de retroceso vuelva a la vista de list original.

Esto no es algo que se ve con demasiada frecuencia en las aplicaciones, pero se puede lograr así:

 // Get the current view controller stack. NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:self.navigationController.viewControllers]; // Instantiate your new detail view controller GoalDetailViewController *detailViewController = [[GoalDetailViewController alloc] initWithNibName:@"GoalDetailViewController" bundle:nil]; detailViewController.goal = goal; // Remove the topmost view controller from the stack [viewControllers removeLastObject]; // Replace it with the new detail view controller [viewControllers addObject:detailViewController]; // Change the view controller stack [self.navigationController setViewControllers:viewControllers animated:YES]; // Clean up [detailViewController release]; 

Exactamente qué animation obtienes se describe aquí .