2011-12-14 17 views
77

estoy invocando manualmente un segue (establecer como modal) con el fin de mostrar un formulario de entrada en Xcode 4.2 usando Storyboards con la siguiente línea de código:Cierre de una vista que se muestra a través de un segue modal

[self performSegueWithIdentifier:@"LoginSegue" sender:nil]; 

I Probablemente me falta algo realmente simple, sin embargo, no encuentro una forma de cerrar programáticamente la vista de inicio de sesión y volver a la vista anterior.

La vista es parte de un controlador de vista de navegación, por lo que configurar el tipo de transición para "presionar" me permite usar el botón Atrás para enviarme a mi pantalla anterior, pero en el modo "modal", no estoy totalmente seguro de cómo lograr esto (después de presionar un botón, por ejemplo)

Cualquier ayuda sería muy apreciada.

+0

Xcode es un IDE solamente, enfermos Editar –

Respuesta

172

Si su destino de implementación es iOS 5.0 o posterior, utilice este mensaje:

[self dismissViewControllerAnimated:YES completion:nil]; 

O en Swift:

self.dismissViewControllerAnimated(true, completion: nil) 

Si su destino de implementación es mayor, use este mensaje (en desuso):

[self dismissModalViewControllerAnimated:YES]; 
+0

Gracias Rob, He intentado esto ya y que doesn' Parece que hace cualquier cosa. ¿Esto tiene alguna condición especial? – Nick

+1

Hice un caso de prueba trivial con dos VCs en un guión gráfico. El VC inicial tiene un botón "Modal" con una transición modal al segundo VC. El segundo VC tiene un botón "Descartar" conectado a un método que hace '[self dismissModalViewControllerAnimated: YES]'. Funciona como se esperaba. No conozco ninguna condición especial. –

+0

Solo quiero señalar que he resuelto este problema. Al ser nuevo en los guiones gráficos, no configuré mi tipo de segue para modal one one instance, ¡así que fue un error de usuario! Gracias. – Nick

4

El siguiente debería funcionar bien ...

[self dismissModalViewControllerAnimated:YES]; 

Hago exactamente esto con una página de inicio de sesión en mi latest tutorial here, sin problemas.

+1

Ahora obsoleto en iOS7: Use dismissViewControllerAnimated: completion: instead. –

13

[self dismissViewControllerAnimated:YES completion:nil]; es una nueva forma de iOS5

3

El código siguiente funciona en Swift 3:

self.dismiss(animated: true, completion: nil) 
Cuestiones relacionadas