web-dev-qa-db-fra.com

Swift - Changer le contrôleur de vue en utilisant le bouton d'action

Comment puis-je changer le contrôleur de vue à l’aide de UIButton ? Voici mon code:

@IBAction func scanAction(sender: AnyObject) {
      //switch view controller 
}

Lorsque je clique sur le bouton Numériser, un formulaire de connexion s’affiche. 

Mon contrôleur de vue dans Main.storyboard est comme ceci

enter image description here

S'il vous plaît donnez-moi un conseil si vous le pouvez. Je vous remercie.

8
Mohammad Nurdin

J'ai déjà trouvé la réponse

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)

let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("nextView") as NextViewController
self.presentViewController(nextViewController, animated:true, completion:nil)
15
Mohammad Nurdin

Une solution consiste simplement à avoir une transition modale à partir d'un bouton. Aucun IBOutlet requis.

enter image description here

Par programme:

@IBAction func scanButton (sender: UIButton!) {

    performSegueWithIdentifier("nextView", sender: self)

}

Vous devez ajouter une séquence modale et nommer l'identifiant. Vous connectez le VC1 à VC2.

8
Steve Rosenberg

Le moyen le plus simple consiste à créer un UINavigationViewController. Ajoutez ensuite un bouton à l'écran actuel. Maintenant, appuyez sur Ctrl et faites glisser le bouton vers le contrôleur de vue cible. C'est tout.

Source: iOs UINavigationViewController .

2
Shaba Aafreen

Il y a en fait une réponse sans code codé . Dans votre story-board, vous pouvez contrôler en faisant glisser le bouton vers le contrôleur de vue suivant et en définissant la séquence. Cela garantira que chaque fois que vous appuierez sur le bouton, la séquence se déclenchera. Vous pouvez le voir dans "Inspecteur de connexions" du bouton aux séquences déclenchées.

Si vous souhaitez placer des données dans le contrôleur de vue de destination, vous pouvez ajouter une inaction au bouton et les mettre en fonction de préparer la fonction Segue. La bonne chose à ce sujet est que vos séquences déclenchées continueront à se déclencher à partir de votre bouton. Cette partie ressemblerait à ceci:

    @IBAction func buttonPressed(_ sender: UIButton) {
        someImportantData = "some data if needed"
        //no need to trigger segue :)
    }

    //not your case, but in order to understand the sage of this approach
    @IBAction func button2Pressed(_ sender: UIButton) {
        someImportantData = "some data2 if needed"
        //no need to trigger segue :)
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        //retrieve the destination view controller for free
        if let myDestincationViewController = (segue.destination as? MyDestincationViewController) {
            myDestincationViewController.someImportantData = someImportantData
        }
    }

De cette façon, vous n'avez besoin d'aucune chaîne codée en dur pour les identifiants de séquence, les identifiants de storyboard, etc., et vous pouvez même préparer votre contrôleur de vue de destination si nécessaire.

1
FHS