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
S'il vous plaît donnez-moi un conseil si vous le pouvez. Je vous remercie.
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)
Une solution consiste simplement à avoir une transition modale à partir d'un bouton. Aucun IBOutlet requis.
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.
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 .
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.