cocoa touch - Presione segue sin animación
cocoa-touch animation (1)
Estoy escribiendo una aplicación de iPhone basada en un guión gráfico y trabajando en la restauración del estado. Cuando realizo los segmentos normalmente, quiero que sean animados, pero cuando restauro varios niveles de una jerarquía de navegación, solo quiero que la última transición sea animada. Además de configurar dos conjuntos de segues, un conjunto que utiliza una seguación de inserción normal y otro que usa una seguación de inserción personalizada no animada, ¿hay alguna manera de lograr lo que estoy tratando de hacer?
Es posible manipular directamente la pila del controlador de vista, independientemente de los segmentos o guiones gráficos de la aplicación.
Puede utilizar esta técnica para restablecer una pila profunda de controladores de vista y realizar / animar solo un único paso al controlador de vista superior. (Es probable que necesite crear un segue de inserción específico para este fin).
Por ejemplo, para restaurar una pila de controlador de dos vistas, podría hacer lo siguiente. En este ejemplo, se supone que alguna acción en un controlador de vista existente conduce a la restauración del estado, pero puede realizarlo con la misma facilidad desde su delegado de la aplicación.
[self performSegueWithIdentifier:@"Page2Express" sender:self];
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"Page2Express"])
{
// Get any state data you need to from Core Data
CoreDataType *valuePulledFromCoreData = // ...
// Set up the page 2 view controller as you normally would
Page2ViewController *page2ViewController = segue.destinationViewController;
page2ViewController.instanceVariable = valuePulledFromCoreData;
// Create a loose, page 1 view controller and set it up as required
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
Page1ViewController *page1ViewController = [storyboard instantiateViewControllerWithIdentifier:@"Page1ViewController"]; // Ensure you have this identifier set up in your storyboard
page1ViewController.instanceVariable = valuePulledFromCoreData;
// Add the page 1 view controller to the top of the navigation stack (to be later obscured in the segue by the page 2 view controller)
NSMutableArray *viewControllers = [[self navigationController].viewControllers mutableCopy];
[viewControllers addObject:page1ViewController];
[self navigationController].viewControllers = viewControllers;
}
}
Si, en cambio, prefiere no tener animaciones, entonces es más fácil aún. Puede restaurar el estado únicamente manipulando la pila del controlador de vista (y sin usar ningún segue) desde la - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
y - (void)applicationWillEnterForeground:(UIApplication *)application
.
De cualquier forma, funcionará perfectamente y en conjunto con su (s) storyboard (es) existente (s) y segues.