Eigentlich ist es nicht nur ein Datendurchlauf Problem, da diese zusammen eine Programmsteuerung und Datenübertragung Frage. Selbst wenn Sie das Konzept Ihrer App überdenken müssten, da Sie Storyboard ohne die Bedeutung eines Storyboards verwenden möchten, liegt es an Ihnen, und ich hoffe, Sie haben einen guten Grund, das zu tun, was Sie tun.
Wenn Sie also entschieden haben, segue nicht zu verwenden, haben Sie die neue und komfortable Möglichkeit verloren, einen neuen Controller zu instanziieren und Daten zu übertragen, und Sie müssen die Kontrolle und die Daten in zwei getrennten Schritten übertragen. Wenn Sie eine andere Szene im Storyboard instanziieren (wie bei instantiateViewControllerWithIdentifier :), haben Sie gerade einen neuen Controller instanziiert und das Steuerelement, aber nicht die Daten übertragen. Denken Sie darüber nach, wie Sie einen neuen Controller von einem xib auf eine alte Art instanziiert haben (Sie müssen also initWithCoder: oder watchFromNib im zweiten View-Controller verwenden, da das Storyboard initWithName: bundle :) nicht aufruft, aber nichts mehr getan hat .
Sie haben also einen neuen Controller (der im Identity-Teil des zweiten Storyboards benannt ist), der im Universum hängt, ohne irgendeine Beziehung oder Verbindung mit irgendetwas anderem (wie das Storyboardbild es schön illustriert) damit was du willst.
Sie möchten also etwas tun und Sie benötigen Daten aus dem vorherigen Storyboard (ViewController). Was Sie brauchen, ist, diese Daten dem zweiten Storyboard (ViewController) zur Verfügung zu stellen, und wie Sie wissen, gibt es viele Lösungen dafür, die lange verfügbar waren, bevor ein Storyboard existiert.
Also in Bezug auf Ihren Code hängt die "Datenübertragung" von Ihrem Design ab, ob die beiden Controller Unterklassen voneinander sind oder was auch immer ...
Wenn Sie nicht gerne mit Unterklassen umgehen und sie so oft wie möglich entkoppeln möchten, machen Sie am besten eine Eigenschaft Ihrer Daten in der ersten Steuerung und beziehen Sie sich von der zweiten (nach dem Importieren der Ersten) .h-Datei) und beziehen sich nur um es in seiner viewDidLoad oder in initWithCoder: oder überall dort, wo Sie sie brauchen, wie
secondViewControllerdata = firstViewControllerdata.thatDataProperty
natürlich können Sie das gleiche in umgekehrter Richtung tun und eine Eigenschaft des zweiten Controllers machen und verweisen dazu in Ihrem ersten View-Controller.
möglich Duplikat [Geben von Daten zwischen View-Controller] (http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) –
Ich sehe nicht, eine Lösung in diesem Beitrag. Ich verwende den Instantiate-Controller, weil ich keine Segmente verwende. Also kann ich immer noch PreparedForseGue verwenden, gibt es keine Überfahrt? – halloway4b
Wo ein View-Controller instanziiert wird, sollte nicht ändern, wie Sie Nachrichten an ihn übergeben. –