2012-02-21 11 views
37

Usando guiones gráficos ¿cuál es la manera correcta de descartar un modal?ios Storyboarding - ¿Descartar un modal?

  • usando IBCódigo de escritura y de escritura para descartar después de hacer clic en un botón?
  • usando segue y notificar al controlador de vista padre después de hacer clic en un botón?

Respuesta

20

ve aquí Dismissing a Presented View Controller a mitad de

Cuando llega el momento de despedir a un controlador de vista presentado, el enfoque preferido es dejar que el controlador de vista presentación descartarlo.

lo que debe utilizar un código escrito IBAction y despedir después haga clic en un botón

+4

"Por lo que debe utilizar un IBAction y escribir código para despedir después haga clic en un botón" De hecho está mal. Lo que Apple está diciendo es "necesitas notificar al controlador de vista padre" que luego desestima el modal ". –

+4

El enlace está roto hoy en día – po5i

+0

Hice una categoría :) https://github.com/evanstoddard/UIViewController-Dismiss-Actions –

10

Véase mi respuesta here. Le da dos maneras de descartar el controlador de vista modal con guión gráfico. Me gusta el método dos que se describe porque si agregas la clase en tu proyecto, tu retorno de las vistas modales se puede hacer sin código usando el guión gráfico solo. Dicho esto, si ha implementado un protocolo delegado y delegado, también es un buen lugar para colocar la instrucción dismissModalViewController.

9

He descubierto que generalmente cuando intento hacer esto en el guión gráfico prefiero no crear clases adicionales. Todavía tiene sentido realizar el descarte desde el controlador de vista de presentación, por lo que requiere una clase para respaldarlo.

Si crea un IBAction en el controlador de vista de presentación y lo nombra apropiadamente, p. Ej.

- (IBAction)dismissAnyModel:(id)sender 
{ 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

Luego de guión gráfico donde desea activar la descartan de crear una acción para el primer nivel de respuesta como se muestra a continuación. Puede ampliar esto para que funcione con múltiples controladores de vista de presentación creando nombres únicos para las IBActions.

Create an outlet to first responder

Select correct IBAction

More information on first responder and the responder chain

0

Como la documentación en línea de Apple indica, el controlador de vista de presentación se encarga de despedir a la vista modal (presentada).

Hay un poste y ejemplo disponibles here

+3

Enlace obsoleto. Es por eso que no debe responder publicando un enlace sin publicar primero algunos códigos de muestra. – GeneCode

3

Para ello dentro del UIStoryboard necesita primero en crear un objeto del tipo UIStoryboardSegue en su proyecto

Creating a new class of type <code>UIStoryboardSegue</code>

A continuación, inserte siguiente método en el interior la clase. Aquí es mi clase

@implementation DismissController

- (void)perform{ 

    UIViewController *sourceVC = self.sourceViewController; 
    [sourceVC.presentingViewController dismissViewControllerAnimated:YES 
                  completion:nil]; 
} 

ya se puede utilizar dentro de su UIStoryboard.Seleccione el botón que debe hacer que UIViewController desaparezca y arrástrelo al UIViewController al que desea ir. En mi caso, muestra ** despedir a Controller * debido al nombre de mi clase.

enter image description here

Selecciónelo y ya está! También hay una muy buena explicación on this website.

+1

woow, gracias por eso! –

+0

@LeoCavalcante ¡De nada! :) –

3

Según respuesta Alex CIO de Swift 3 y XCode 8.3:

Crear clase:

import UIKit 

class DismissSegue: UIStoryboardSegue { 
    override func perform() { 
     self.source.presentingViewController?.dismiss(animated: true, completion: nil) 
    } 
} 

Pero en guión gráfico que debe elegir:

Acción Segue -> Personalizado -> despedir

Sólo después de esta opción de menú aparecen en Action Segue

Cuestiones relacionadas