2017-08-21 3 views
0

Comment faire référence au contrôleur précédent. Je veux utiliser une instruction if quelque chose comme le suivant:Récupère le précédent UINavController

if previousViewController = searchController { 
//preform a method 
}else if previousViewController = notificationController { 
//preform another method 
} 

mais comment puis-je me référer à la vue précédente Contrôleur? Donc, par exemple, si je clique sur un bouton sur le contrôleur de vue A qui me prend pour voir le contrôleur B, je veux en quelque sorte me référer au contrôleur A. J'ai regardé des questions similaires mais je n'arrive pas à trouver une réponse qui aide moi assez. Merci à l'avance

+0

Qu'entendez-vous exactement par "contrôleur de vue précédente"? –

+0

Désolé je devrais m'expliquer mieux. Donc, si je clique sur un bouton sur le contrôleur de vue A qui me prend pour voir le contrôleur B, je veux obtenir une référence pour voir le contrôleur A. est-ce logique? @AshleyMills –

+0

Est-ce que B est présenté comme un VC modal? Ou poussé en utilisant un UINavigationVC? – nathan

Répondre

1

Mon moyen préféré autour de ce serait d'ajouter une propriété à ViewControllerB pour montrer son utilisation. Par exemple ...

class MyViewController: UIViewController { 

    enum Mode { 
     case search, notify 
    } 

    var mode = Mode.search 

    override viewDidLoad() { 
     super.viewDidLoad() {  
      configure() 
     } 
    } 

    func configure() { 
     switch mode { 
     case .search: 
      // configure for search results 
     case .notify: 
      // configure for notification 
     } 
    } 
} 

puis dans le contrôleur de vue présentant:

class SearchViewController: UIViewController { 
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {   
     if let mvc = segue.destination as? MyViewController { 
      mvc.mode = .search 
     } 
    } 
} 

ou un ensemble mvc.mode = .notify si la présentation de votre NotificationViewController

En utilisant cette méthode, MyViewController n'a pas besoin d'avoir des connaissances de comment ou par quoi il a été présenté. Vous pourriez le pousser sur une pile de nav, ou changer SearchViewController à DownloadViewController, ce ne serait pas grave.

+1

ignorer mon dernier commentaire. Cela fonctionne parfaitement! Merci beaucoup –