2017-10-20 12 views
0

J'essaie de comprendre la communication entre deux contrôleurs de vue.Quelles sont les différences entre instantiateViewController (withIdentifier :) vs ViewController (nibName: bundle :)?

Lors du passage de données sans segue, j'ai vu deux méthodes pour créer une instance de contrôleur de destination.

La première est storyboard?.instantiateViewController(withIdentifier:). Le deuxième est ViewController(nibName:bundle:). Puis présentez-les avec present(UIViewController..).

Quelles sont les différences entre les deux méthodes? Sont-ils juste pour trouver les contrôleurs de vue par un identifiant de storyboard ou un nibName?

+0

Oui, cela dépend où (c'est-à-dire dans quel type de fichier) le contrôleur de vue a été conçu. –

Répondre

3

instantiateViewController(withIdentifier) est pour les contrôleurs de vue qui sont dans un story-board, alors que UIViewController(nibName:bundle:) est pour ceux qui ont été créés dans un fichier .xib. Les deux peuvent être utilisés, cela dépend de la méthode de création de l'application. Si vous envisagez d'établir des relations complexes avec les contrôleurs de vue, les storyboards peuvent être la meilleure solution pour vous, car l'organisation des contrôleurs de vue est plus efficace lorsque vous pouvez structurer vos VC dans un emplacement bidimensionnel.