Beide Methoden erlauben mir, einen neuen View-Controller zu präsentieren (einen durch Aufruf von presentviewcontroller), so dass ich den Unterschied zwischen den beiden nicht verstehe und wann ich sie verwenden sollte.Was ist der Unterschied zwischen der Verwendung von instanziateViewControllerWithIdentifier und dem Ausführen vonseguewidentifier?
Antwort
Beide verweisen auf Storyboard-bezogene Identifikatoren. Der Hauptunterschied besteht darin, dass ein Objekt (performSegueWithIdentifer
) ein Objekt basierend auf dem Ende eines Segments instanziiert (auf das der Abschnitt verweist), während das andere (instantiateViewControllerWithIdentifier
) ein eindeutiges VC basierend auf dem VC-Bezeichner (nicht dem Segment) instanziiert.
Sie können mehrere Segmente mit demselben Bezeichner an verschiedenen Stellen im Storyboard haben, während VCs in einem Storyboard nicht denselben Bezeichner haben können.
performSegueWithIdentifer und instantiateViewControllerWithIdentifier beide werden verwendet, um von einem auf einen anderen Viewcontroller Viewcontroller zu bewegen. Aber es gibt so viele Unterschiede ....
Die Kennung des ersten Falles einen Übergang wie Push definiert, Modal, kundenspezifische usw., die verwendet werden, eine bestimmte Art von Übergang von einem VC zu einem anderen VC auszuführen . z.
self.performSegueWithIdentifier("push", sender: self);`
wobei "push" eine Kennung eines Push-Segments ist.
Der Bezeichner des zweiten Falls definiert einen VC wie myViewController, myTableViewController, myNavigationController usw. Die zweite Funktion wird verwendet, um von einem VC im storyBoard zu dem spezifischen VC (mit Bezeichner.) Zu gehen. z.
var vc = mainStoryboard.instantiateViewControllerWithIdentifier("GameView") as GameViewController; self.presentViewController(VC, animated: true, completion: nil) ;
wo "GameView" ist die Kennung von GameViewController. Hier wird eine Instanz von GameViewController erstellt und dann wird die Funktion presentViewController aufgerufen, um zum instanziierten vc zu gehen.
Für den ersten Fall mit Hilfe von segue Bezeichner können Sie einen mehr Werte von Variablen an die nächste VC weitergeben. z.
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { if (segue.identifier == "push") { let game = segue.destinationViewController as GameViewController game.value = self.myvalue // *value* is an Int variable of GameViewController class and *myvalue* is an Int variable of recent VC class. } }
Diese funcion auch wenn self.performSegueWithIdentifier ("Push", Absender: Selbst-) genannt; wird aufgerufen, um den Wert an GameViewController zu übergeben.
Aber in der 2. Fall ist es möglich, direkt wie
var vc = mainStoryboard.instantiateViewControllerWithIdentifier("GameView") as GameViewController; vc.value = self.myvalue; self.presentViewController(VC, animated: true, completion: nil) ;
- 1. Was ist der Unterschied zwischen der Rückgabe von bind und dem Ergebnis der Verwendung von function()
- 2. Was ist der Unterschied zwischen der Verwendung externer und # Headerdateien?
- 3. Was ist der Unterschied zwischen `==` und `ist`?
- 4. Was ist der Unterschied zwischen der Verwendung von cfinvoke und createObject zum Ausführen einer Komponentenfunktion?
- 5. Was ist der Unterschied zwischen der Verwendung von onClick und dem onclick-Attribut von jQuery?
- 6. Was ist der Unterschied zwischen $ und $$?
- 7. Was ist der Unterschied zwischen dem WebConfigurationManager und dem ConfigurationManager?
- 8. Was ist der Unterschied zwischen dem Standard- und dem Standardkonstruktor?
- 9. Was ist der Unterschied zwischen dem Betriebssystem und dem Kernel?
- 10. Was ist der Unterschied zwischen dem Aufruf von Stream.Write und der Verwendung eines StreamWriter?
- 11. Was ist der Unterschied zwischen:
- 12. Was ist der Unterschied zwischen `&` und `ref`?
- 13. Was ist der Unterschied zwischen Verwendung und extern?
- 14. Was ist der Unterschied zwischen einem Mixin und dem Dekorationsmuster?
- 15. Was ist der Unterschied zwischen/* ... */und/** ... */
- 16. Was ist der Unterschied zwischen dem [OptionalField] und [NonSerialized]
- 17. Was ist der Unterschied zwischen Difftime und '-'?
- 18. Python Was ist der Unterschied zwischen einem Pool von Worker-Prozessen und dem Ausführen mehrerer Prozesse?
- 19. Was ist die Verwendung von .exp und was ist der Unterschied zwischen .lib und .dll
- 20. Was ist der Unterschied zwischen der Verwendung von "" und "" und() beim Deklarieren von Variablen?
- 21. Was ist der Unterschied zwischen OnStart und dem App Constructor
- 22. Was ist der Unterschied zwischen dem neuen Operator und Class.newInstance()?
- 23. Was ist der Unterschied zwischen der Verwendung und der Nichtverwendung von Anweisungen mit DbContext [Code zuerst]?
- 24. In Perl, was ist der Unterschied zwischen der Verwendung und dem Laden eines Moduls?
- 25. Was ist der Unterschied zwischen:.! und: r !?
- 26. Was ist der Unterschied zwischen Verilog! und ~?
- 27. was ist der Unterschied zwischen [[], []] und [[]] * 2
- 28. Was ist der Unterschied zwischen $ (...) und `...`
- 29. Was ist der Unterschied zwischen .Equals und ==
- 30. Was ist der Unterschied zwischen "$^N" und "$ +"?
instantiateViewControllerWithIdentifier tut, was der Name schon sagt; Es instanziiert einen View-Controller, mehr nicht. Es zeigt * keine * einen View-Controller. – rdelmar
@rdelmar Ich habe Ihren Kommentar angesprochen, um für Sie zu klären. – Michael