Ich habe mehrere UIViewControllers
in einem Storyboard. Jetzt möchte ich einige UIViewControllers
auf ein anderes Storyboard verschieben. Ist es möglich?
Ich habe mehrere UIViewControllers
in einem Storyboard. Jetzt möchte ich einige UIViewControllers
auf ein anderes Storyboard verschieben. Ist es möglich?
Antworten:
Ja, es ist möglich.
Hinweis: "IBOutlets bleiben nach dem Kopieren unverändert (überprüft unter Xcode 6.3.2)."
Es ist möglich zu kopieren, aber Sie müssen beide Storyboards gleichzeitig in einem Projekt öffnen und dann kopieren und einfügen.
Wenn Sie in Xcode 8 speziell View Controller in ein anderes Storyboard verschieben möchten, wählen Sie einfach die View Controller aus, die Sie mit Cmd verschieben möchten, und klicken Sie auf den View Controller. Lassen Sie sie ausgewählt, gehen Sie zur Registerkarte Editor und wählen Sie Refactor to Storyboard. Sie werden nach dem Namen der neuen Storyboard-Datei gefragt und die Eingabetaste gedrückt.
Eine neue Storyboard-Datei wird mit Ihren ausgewählten View-Controllern erstellt. Im Main.storyboard sehen Sie anstelle dieses Ansichts-Controllers ein Storyboard-Referenzobjekt, das Ihre Referenz auf das neue Storyboard ist, das Sie gerade erstellt haben.
Das Kopieren und Einfügen (Befehl + C, Befehl + V) funktioniert einwandfrei. Denken Sie jedoch daran, die Steckdosenverbindungen aufzulösen, da Xcode die ursprünglichen Verbindungen beizubehalten scheint: Schließen Sie das Projekt / öffnen Sie es erneut, löschen Sie die Fehler und stellen Sie fehlende Verbindungen wieder her.
Das Kopieren / Einfügen ist möglich, funktioniert jedoch nur, wenn beide Storyboards mit dem Xcode-Assistenten-Editor nebeneinander geöffnet sind.
Wenn die Verwendung von Ausschneiden und Einfügen für Sie fehlschlägt, gibt es eine Problemumgehung. Das Einfügen schlägt fehl, wenn sich jetzt ViewController in der Datei befindet, die eingefügt wird. Dadurch ist es unmöglich, das Storyboard zum Einfügen auszuwählen. XCode weigert sich einzufügen. Sie müssen also zuerst einen leeren Ansichts-Controller aus der Bibliothek in das Storyboard ziehen. Wählen Sie dann diesen viewController im Storyboard aus und das Einfügen funktioniert. Nachdem Sie fertig sind, können Sie den Dummy-ViewController löschen. Du wirst es nicht wieder brauchen.
Schnittstellenelemente können über Kopieren / Einfügen zwischen Xib- und Storyboard-Dateien verschoben werden .
Das hat ursprünglich bei mir nicht funktioniert. Ich habe versucht, eine UICollectionViewCell von einer dedizierten Xib in unser Haupt-Storyboard zu kopieren. Die Zelle würde nicht in das Storyboard kopiert.
Die Lösung bestand darin, das spezifische übergeordnete Element im Storyboard auszuwählen. Die UICollectionViewCell kann als untergeordnetes Element einer UICollectionView in das Storyboard eingefügt werden, kann aber ansonsten nicht eingefügt werden.
Wenn Sie Probleme beim Einfügen eines bestimmten Elements haben, stellen Sie sicher, dass Sie ein gültiges übergeordnetes Element ausgewählt haben, bevor Sie versuchen, es einzufügen.
Ich bin auf eine ähnliche Situation gestoßen, in der ich in meinem Haupt-Storyboard zu viele Szenen habe und umgestalten muss. Die Idee, die ich am Anfang hatte, war, mehrere zu markieren und zu kopieren und einzufügen, wie von vielen vorgeschlagen. Ich war jedoch besorgt über die Auflösung von Storyboard-Verbindungen zum View Controller-Code. Nach langem Suchen stellte ich fest, dass seit iOS 9 eine neue Funktion für "Refactor to Storuboard" verfügbar ist. Sie können mehrere Szenen in Ihrem Quell-Storyboard markieren und diese Option im Menü Editor auswählen. Dann werden alle ausgewählten Szenen aus Ihrem alten Storyboard extrahiert, ein neues Storyboard erstellt sowie ein Link zu dem im alten / Haupt-Storyboard. Nützliche Totorials sind: https://code.tutsplus.com/tutorials/ios-9-staying-organized-with-storyboard-references--cms-24226 https://www.raywenderlich.com/115697/ios-9-storyboards-tutorial-whats-new-in-storyboards
Ich hoffe, dass diese neue offizielle Storyboard-Refactoring-Funktion eine bessere Lösung für diese Art von Problemen bieten kann.
Ich denke es ist möglich ....
UIStoryboard *secondStoryBoard = [UIStoryboard storyboardWithName:@"secondStoryBoard" bundle:nil];
UIViewController *theTabBar = [secondStoryBoard instantiateViewControllerWithIdentifier:@"myTabBar"];
[self.navigationController pushViewController:theTabBar animated:YES];