2012-10-31 10 views
6

Ich habe vor langer Zeit eine iPhone App gemacht und ich denke jetzt daran, es zu einer universellen App zu machen, aber ich frage mich, ob ich Storyboards für die iPad Version verwenden könnte, also für das iPhone würde es eine MainWindow.xib laden und für das iPad würde es eine MainStoryboard-Datei laden. Ist das möglich?Können Sie eine universelle App mit MainWindow.xib für das iPhone und Storyboard für das iPad erstellen?

+1

Ich denke, es sei denn, die App ist sehr komplex, Sie wären besser dran, wenn Sie einfach alles Storyboard machen. Auf diese Weise würden alle Übergänge gleich sein und Ihr Code wäre viel sauberer. – nycynik

+0

Das ist die Sache, die App ist ziemlich komplex, und ich denke nicht, dass ich es noch einmal für das iPad machen würde, wenn Storyboards nicht verfügbar wäre, aber bevor ich in irgendetwas renne, muss ich wissen, ob ich dazu in der Lage bin TU das. – user1790012

Antwort

3

Ja, aber Sie müssen eigentlich zwei separate Storyboards erstellen (1 für iPhone und 1 für iPad).

In das iPhone-Storyboard ziehen Sie einfach Ihre Hauptfenster.xib in die Mitte des rootViewController und stellen Sie sicher, dass es Vollbildmodus wird.

Dann können Sie mit Ihrem iPad-Storyboard machen, was Sie wollen.

Stellen Sie sicher, dass Ihre beiden Storyboard-Dateien in der Projektzusammenfassung korrekt verknüpft sind!

+0

Hört sich gut an, ich werde es versuchen und sehen, was passiert, vielen Dank. – user1790012

0

Es wird einfacher für Sie, ein Storyboard auf dem iPad und Nibs auf dem iPhone zu verwenden, wenn Sie Haupt-Schnittstelle nicht Satz tun (NSMainNibFile in Info.plist) oder eine Hauptstoryboard (NSMainStoryboardFile in Info.plist).

Stattdessen bewegen AppDelegate aus MainWindow.xib und lassen UIApplicationMain es instanziiert durch seinen Klassennamen als vierte Argument übergeben zu UIApplicationMain in main. Veranlassen Sie, dass die App den Besitzer der Datei von MainWindow.xib delegiert.

In Ihrem App-Delegaten application:didFinishLaunchingWithOptions: können Sie das Interface-Idiom überprüfen.

Wenn das Schnittstellen-Idiom iPhone ist, laden Sie MainWindow mit -[NSBundle loadNibNamed:owner:options:].

Wenn die Schnittstelle Idiom iPad ist, erstellen Sie Ihre Fenster, Last MainStoryboard+[UIStoryboard storyboardWithName:bundle:] Verwendung instanziiert seiner ursprünglichen View-Controller mit -[UIStoryboard instantiateInitialViewController], und legen Sie diese Ansicht Controller als Stamm View-Controller-Fenster.

3

Gazzini hat Recht und bekam seine Antwort zuerst, während ich Forschung machte, um zu bestätigen, dass das & verhältnismäßig aufrichtig war, bevor ich meine eigene Antwort eingeben konnte. Also +1 zu ihm.

Sie benötigen jedoch nicht zwei separate Storyboards. Sie benötigen nur ein Storyboard für eine Architektur und Ihre XIB-Dateien für die Architektur, die Sie bereits unterstützen.

Hier ist ein Screenshots, die Ihnen helfen könnte zeigen, was ich in meinem eigenen Testprojekt hat:

Yes It Is Possible

einfach bearbeiten Sie die plist Ihrer Anwendung Sie eine „nib“ Datei für die spezifische Architektur zu verwenden haben bereits XIB-Dateien für und geben dann Storyboards für die neue Architektur an.

+0

Vielen Dank auch für Ihre Antwort, aber bei einigen Nachforschungen habe ich festgestellt, dass ich, um eine App im App Store einzureichen, in meiner info.plist nur entweder NSMainNIBFile oder UIMainStoryboardFile einstellen kann. Ich fand das im Schlüsselreferenzhandbuch der Informationseigenschaftsliste, wo es heißt: "NSMainNIBFile: Dieser Schlüssel schließt sich gegenseitig mit dem Schlüssel" UIMainStoryboardFile "(Seite 77). Sie sollten einen der Schlüssel in Ihre Info.plist-Datei, aber nicht beides einschließen . " – user1790012

Verwandte Themen