Wie kann eine App auf das XIB oder Storyboard zugreifen, das für den Startbildschirm verwendet wird? Die XIB befindet sich nicht im Hauptpaket (Beispiel: NSBundle.mainBundle().pathsForResourcesOfType(nil, inDirectory: "")
). Dies ist besonders unerwartet, da "Launch Screen.xib" in der Build-Phase "Bundle-Ressourcen kopieren" aufgeführt ist, aber ip im Bundle nicht angezeigt wird. Daher muss Xcode dies speziell behandeln.Programmgesteuertes Zugreifen auf den Startbildschirm XIB oder Storyboard
6
A
Antwort
5
Wie Xib ist nicht in dem Hauptbündel immer Pfad Null zurückkehrt, aber Sie können die XIB des Startbildschirm ohne die Hilfe des Pfades mit der Methode
let launchScreenNib = UINib(nibName: "LaunchScreen", bundle: nil)
oder
Sie können erhalten erhalten laden Ansichten von XIB als
// Swift
let objects = NSBundle.mainBundle().loadNibNamed("LaunchScreen", owner: self, options: nil)
let view = objects[0] as UIView
// Obj C
NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"LaunchScreen" owner:self options:nil];
UIView *view = [objects objectAtIndex:0];
0
auf meine eigene Frage Anknüpfend, es sieht „Verwenden sie als Startbildschirm“ aus und verursacht Xcode eine NIB-Datei für den Start-Bildschirm zu bauen wie Makeln .
- Nach einer kompletten sauber (entfernt DerivedData) und Löschen der App aus dem Gerät zu machen, ich ein- und ausgeschaltet „Verwenden Sie als Startbildschirm“ für die Hauptansicht-Controller in LaunchScreen.xib. Wenn die App ausgeführt wurde, wurde sie ohne Startbildschirm gestartet, aber der Build erstellte jetzt LaunchScreen.nib.
- Wurde eine komplette Reinigung wieder und löschte die App aus dem Gerät. Toggled "Als Startbildschirm verwenden" wieder aktiviert und neu erstellt. Im App-Bundle unter dem neuen Ordner "DerivedData" war LaunchScreen.nib immer noch vorhanden.
bundle.loadNibNamed(...)
hat jetzt gut funktioniert.
4
Wenn LaunchScreen ist storyboard
und kein xib
, Verwenden Sie den folgenden Code ein.
let launchScreen = UIStoryboard(name: "LaunchScreen", bundle: nil).instantiateInitialViewController()
if let launchView = launchScreen?.view {
view.addSubview(launchView)
}
Verwandte Themen
- 1. Startbildschirm .XIB mit Vollbild-Bildansicht
- 2. Wie XIB in Storyboard konvertieren?
- 3. Anruf Xib Klasse von Storyboard
- 4. So wählen Sie Hintergrundansichten in einem Storyboard oder Xib aus
- 5. Startbildschirm-Storyboard zeigt kein Bild an
- 6. Storyboard und Xib im selben Projekt?
- 7. Startbildschirm mit Storyboard-zentriertes Bild iOS
- 8. IOS Swift- Zum Startbildschirm ohne Storyboard navigieren
- 9. Anpassen der Zeit für den Startbildschirm
- 10. Dynamic Storyboard oder Xibs/Nibs
- 11. Einige XIB/Storyboard-Strings als nicht lokalisierbar markieren
- 12. Code im Startbildschirm ausführen
- 13. Ein Start Storyboard oder Xib muss zur Verfügung gestellt werden, es sei denn, die App erfordert Vollbild
- 14. Ausblenden der blauen Linie in xib/Storyboard in Xcode 7.2
- 15. Wie lege ich UILabels Buchstabenabstand von Storyboard/Xib fest?
- 16. Laden eines UIViewController XIB zu ContainerView im Storyboard
- 17. iOS App Erweiterung mit Xib anstelle von Storyboard
- 18. Programatically segue aus xib-Datei erstellen in Storyboard
- 19. Benutzerdefinierte Animation im Startbildschirm
- 20. erkennen, wenn der Benutzer auf den Startbildschirm geklickt
- 21. xcode7 ohne Storyboard, Anzeige nicht richtig
- 22. Xcode-Storyboard: Zugriff auf globale Farbe vom Storyboard aus
- 23. Android Implementieren Sie einen Seitenzähler wie den auf dem Startbildschirm
- 24. Verwenden Sie Launch Image für den Startbildschirm
- 25. Storyboard Bezug auf cocoapods Storyboard scheint
- 26. Auf Repository oder Service von Entität zugreifen
- 27. Auf den Wert einer Präprozessor-Makrodefinition zugreifen
- 28. iPhone6 Statusleiste zeigt gezoomt App, aber nicht auf dem Startbildschirm
- 29. Permanente App-Kachel auf dem Startbildschirm
- 30. Wie kann ich auf den AST zugreifen, den LESS generiert?
Xcode erzeugte die NIB für den Startbildschirm nicht, daher würde dieser Code abstürzen. Wenn die NIB nicht im Bundle ist, funktioniert 'bundle.loadNibNamed (...)' nicht. Ich konnte es erreichen, indem ich mit der Option "Als Startbildschirm verwenden" im Interface Builder spielte, wodurch Xcode die NIB erzeugte. – ide
@ide Update Xcode, standardmäßig erstellt LaunchScreen.xib während der eigentlichen Projekterstellung. –
Ich meine, ich hatte LaunchScreen.xib und es wurde angezeigt, als ich die App startete ... nur, dass Xcode es nicht in eine NIB-Datei umwandelte und es in das Bundle kopierte. – ide