2017-10-19 1 views
0

Je suis un débutant dans le développement iOS, et récemment, je viens de suivre le tutoriel pour les débutants. Supposons que je souhaite passer d'un VC à un autre VC en cliquant sur un bouton, donc je découvre qu'il y a trois façons de passer d'un ViewController à un autre ViewController (modal segue).3 façons de voir la transition du contrôleur

  1. dans storyboard principale, je clique simplement le contrôle et faites glisser le bouton th contrôleur de vue de destination et choisissez présente de façon modale

  2. programmaticaly, en mettant en œuvre le code ci-dessous

    @IBAction func logInButtonDidPressed(_ sender: Any) { 
    
    
    
    // modal transition to VC2 
    
    let viewController2 = 
    storyboard?.instantiateViewController(withIdentifier: 
    "ViewController2") as! ViewController2 
    
    present(viewController2, animated: true, completion: nil) 
    
    
    
    } 
    
  3. programatically , en utilisant la fonction d'exécution de séquence

    @IBAction func logInButtonDidPressed(_ sender: Any) { 
    
    
    performSegue(withIdentifier: "toSecondViewController", sender: self) 
    
    
    
    } 
    

sont-ils exactement les mêmes? ou est-ce utilisé pour différents cas?

Merci à l'avance :)

Répondre

2

Oui, ils sont similaires. Et la différence évidente, je pense, est le passage des données. Le premier et le troisième sont identiques, utiliser la méthode suivante pour transmettre des données au contrôleur suivant:

// MARK: - Navigation 

// In a storyboard-based application, you will often want to do a little preparation before navigation 
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    // Get the new view controller using segue.destinationViewController. 
    // Pass the selected object to the new view controller. 
    if let viewController2 = segue.destination as? ViewController2 { 
     viewController2.someProperty = someValue 
    } 
} 

Pour la deuxième transition, vous définir directement les données lors de la création de la prochaine unité de commande:

let viewController2 = storyboard?.instantiateViewController(withIdentifier: 
"ViewController2") as! ViewController2 

viewController2.someProperty = someValue 

present(viewController2, animated: true, completion: nil) 
2

J'utilise des enchaînements, car il y a certains avantages par rapport à la présentation manuelle:

  • Vous pouvez créer des enchaînements déroulage pour quitter le contrôleur d'affichage actuel à un contrôleur de vue dans la hiérarchie.

  • Vous pouvez ajouter la prise en charge des touches 3D en un seul clic de souris.

La première et la dernière méthode produisent des résultats identiques. Je voudrais créer des segues en cliquant et en faisant glisser autant que possible. Si vous devez effectuer une validation de données ou autre avant d'effectuer une transition, vous devez appeler la méthode performSegue manuellement.