web-dev-qa-db-fra.com

Quelle est la bonne façon de rejeter un modal lors de l'utilisation de storyboards?

À l'aide de storyboards, quelle est la bonne façon de rejeter un modal?

  • utiliser IBAction et écrire du code pour fermer après un clic sur un bouton?
  • utiliser segue et informer le contrôleur de vue parent après un clic sur le bouton?
39
aryaxt

Voir ici rejeter un contrôleur de vue présenté environ à mi-chemin

Quand vient le temps de rejeter un contrôleur de vue présenté, l'approche préférée consiste à laisser le contrôleur de vue présent le rejeter.

Vous devez donc utiliser un IBAction et un code d'écriture pour ignorer après un clic sur le bouton

24
Bill Bonar

J'ai trouvé qu'en général, lorsque j'essaie de le faire dans le storyboard, je préfère ne pas créer de classes supplémentaires. Il est toujours judicieux d'effectuer le rejet du contrôleur de vue de présentation, ce qui nécessite une classe pour le sauvegarder.

Si vous créez une IBAction dans le contrôleur de vue de présentation et nommez-la de manière appropriée, par exemple.

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

Ensuite, à partir du storyboard où vous voulez déclencher le rejet de votre part, créez une action pour le premier répondant, comme indiqué ci-dessous. Vous pouvez l'étendre pour qu'il fonctionne avec plusieurs contrôleurs de vue de présentation en créant des noms uniques pour les IBActions.

Create an outlet to first responder

Select correct IBAction

Plus d'informations sur le premier répondant et la chaîne de répondants

12
Chris Mitchelmore

Selon la réponse d'Alex Cio pour Swift 3 et XCode 8.3:

Créer une classe:

import UIKit

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

Mais dans le storyboard, vous devez choisir:

Action Segue -> Personnalisé -> ignorer

Ce n'est qu'après que cette option apparaît sur Action Segue menu

11
UnRewa

Voir ma réponse ici . Il vous donne deux façons de supprimer le contrôleur de vue modale avec le storyboard. J'aime la méthode deux décrite parce que celle que vous ajoutez la classe dans votre projet, votre retour des vues modales peut être fait sans code en utilisant le storyboard seul. Cela dit, si vous avez implémenté un délégué et un protocole de délégué, c'est également un bon endroit pour mettre la déclaration disableModalViewController.

10
T.J.

Pour ce faire à l'intérieur du UIStoryboard, vous devez d'abord créer un objet de type UIStoryboardSegue dans votre projet

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

Insérez ensuite la méthode suivante dans la classe. Voici ma classe

@implementation DismissController

- (void)perform{

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

Vous pouvez maintenant l'utiliser dans votre UIStoryboard. Sélectionnez le bouton qui doit faire disparaître le UIViewController et faites-le glisser vers le UIViewController vers lequel vous voulez aller. Dans mon cas, il indique ** licencier le contrôleur * en raison du nom de ma classe.

enter image description here

Sélectionnez-le et vous avez terminé! Il y a aussi une très bonne explication sur ce site.

7
Alex Cio