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 usa 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?Pulsar segue sin animación
Respuesta
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 gran cantidad de controladores de visualización y realizar/animar solo un solo cambio al controlador de vista superior. (Es probable que necesite crear un segmento de inserción específico para este fin).
Por ejemplo, para restablecer 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, por el contrario, prefiere no tener animaciones, entonces es aún más fácil. Puede restablecer el estado únicamente manipulando la pila del controlador de vista (y sin utilizar ningún segue) desde - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
y - (void)applicationWillEnterForeground:(UIApplication *)application
.
De cualquier forma funcionará a la perfección y en conjunto con su (s) storyboard (s) existente (s) y segues.
- 1. Animación de Segue personalizada
- 2. ¿Realizar Segue programáticamente sin conexión de botón?
- 3. Segue entre ViewControllers sin control de desencadenamiento?
- 4. Custom Segue Empujar/Saltar UIViewControllers
- 5. Sin animación con ViewFlipper?
- 6. Reversión de Segue personalizada con Storyboarding
- 7. cómo realizar un segue
- 8. actividades de conmutación sin animación
- 9. segue no funciona en la prueba de segue simple
- 10. Usar Segue manualmente
- 11. iOS 5 implementación segue
- 12. ios segue "cancelar"
- 13. Usando segue de MapView calloutAccessoryControlTapped
- 14. Segue no llamando a prepareForSegue
- 15. UITableViewCells no anula la selección al regresar de un segue
- 16. jQuery salto de Identificación (sin animación)
- 17. Conviértase en el primer respondedor sin animación
- 18. Marco de animación de UILabel sin problemas
- 19. Fragmento de transición estándar sin animación
- 20. IndexPath para segue from accessoryButton
- 21. ¿Cómo realizar Segue en AppDelegate?
- 22. Cómo realizar Segue con retraso
- 23. XCode clase personalizada segue atascada
- 24. Storyboard Segue a Multiple Views?
- 25. Segue no funciona con iOS6
- 26. Diferencia entre eclipse pulsar, mtj, me
- 27. acelerador (clave mnemotécnica) se ejecutan sin necesidad de pulsar la tecla ALT
- 28. Cómo agrego un segue a un UIGestureRecognizer
- 29. ios: Segue personalizado entre dos viewcontrollers en modo apaisado
- 30. Push segue en iOS 5 no funciona
Recién salido de interés, ¿existe alguna razón por la que manipule la matriz 'viewControllers' en lugar de usar' pushViewController: animated: '? –
'pushViewController: animated:' no solo agrega un controlador de vista a la pila, sino que también actualiza la vista para mostrar ese controlador de vista. En este caso, no queremos ver el 'page1ViewController', ni siquiera brevemente, así que tenemos que agregarlo directamente a la pila. –