Die Auswahl verschiedener storyboards basierend auf Gerätetyp
Ich habe eine universal-app, in denen ich bin laden meine Haupt-storyboard manuell in application:didFinishLaunchingWithOptions
.
Ich habe 2 storyboards für iPhone und iPad, die die ~iPhone
und ~iPad
Suffixe. Ich bin laden meine storyboard mit:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
self.initialViewController = [storyboard instantiateInitialViewController];
Diese Drucke Unknown class ViewController in Interface Builder file.
auf der Konsole, also scheinbar ist es nicht das laden der richtigen storyboard. Allerdings, wenn ich [UIStoryboard storyboardWithName:@"MainStoryboard~iPhone" bundle:nil];
es funktioniert gut, aber natürlich wird die Arbeit nur für das iPhone.
Was bin ich? Wie kann ich mit dem Namen Suffixe wählen automatisch die richtige storyboard?
- warum gehst du nicht zu Projekt-Einstellungen iphone-storyboard in das iphone deployment info-und ipad-storyboard in das ipad deployment info. verwenden Sie mehr als ein storyboard pro Gerät? ich meine, was ist Ihr Zweck in manuell laden des storyboards?
- Was ich versuche zu tun ist, um eine IIViewDeckController als root-Ansicht-controller, so laden Sie das storyboard automatisch hilft nicht.
- Dies scheint ein bug in einigen Versionen (es ist gebrochen in iOS 6.1.2 für mich, aber es war die Arbeit früher auf dem gleichen Projekt). Laut Apple docs, die ~iphone suffix ist universell, betreffen alle Ihre Ressource laden (Bilder, NIB-Dateien - in meiner bisherigen Erfahrung alles). Es scheint Storyboards sind kaputt und irgendwie überspringen Sie die Auswahl.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich kenne keine automatische Auswahl des storyboards auf Basis von Dateinamen-suffix. Sie können
userInterfaceIdiom
zu wählen für iPad vs iPhone:Aber wenn Sie dies tun zu starten, mit einem spezifischen view-controller, alles, was Sie tun müssen, ist ziehen Sie das "start" - Pfeil, um Ihre bevorzugte view controller im storyboard
Oder - wählen Sie die view controller im storyboard, gehen Sie auf die Attribute instpector und tick
isInitialViewController
Dies ist eine andere Sache, Sie können direkt in Ihrem info.plist-Datei. Keine Notwendigkeit für jeden Programmieraufwand. Suchen Sie für die Eigenschaft mit dem Namen "Main storyboard file base name', die haben 'Main' in es standardmäßig.
Können Sie fügen Sie eine weitere Eigenschaft namens " Main storyboard file base name (iPad)', dass wird verwendet für das iPad.
Dies ist, was der raw-Ausgabe in der plist sieht so aus:
Afaik ist es auch möglich, fügen Sie einfach ein zweites storyboard mit dem Namen Main~iPad.storyboard (wenn die UIMainStoryboardFile Schlüssel als Main). Und das wird abgeholt, die für iPads. Noch nicht getestet, in der zwar eine Weile.
//In der appdelegate-Klasse, während dem starten der Anwendung wählen Sie angegebene story-board.
Können Sie den Namen Ihres Storyboards, wie diese
und wählen Sie Sie so