In che modo un'app può accedere allo XIB o allo storyboard utilizzato per la schermata di avvio? XIB non è nel bundle principale (es: NSBundle.mainBundle().pathsForResourcesOfType(nil, inDirectory: "")
). Questo è particolarmente inaspettato poiché "Launch Screen.xib" è elencato nella fase di compilazione "Copia risorse pacchetto" ma non mostra l'ip nel pacchetto, quindi Xcode deve trattarlo in modo speciale.Accesso programmatico alla schermata di lancio XIB o storyboard
6
A
risposta
5
Come Xib non è nel pacchetto principale ottenendo percorso ritorna a zero, ma è possibile ottenere la XIB dello schermo lancio senza l'aiuto di percorso usando il metodo
let launchScreenNib = UINib(nibName: "LaunchScreen", bundle: nil)
o
È possibile caricare ottenere vista da XIB come
// 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
in seguito alla mia domanda, sembra che la commutazione "Usa come schermata di avvio" e spegnendo Xcode causato per costruire un file NIB per la schermata di lancio .
- Dopo aver fatto una pulizia completa (rimosso DerivedData) e l'eliminazione l'applicazione dal dispositivo, io attivata off "Usa come schermata di avvio" per il principale controller della vista in LaunchScreen.xib. L'esecuzione dell'applicazione ha causato l'avvio senza una schermata di avvio, ma ora la build stava creando LaunchScreen.nib.
- Si è pulito di nuovo e ha eliminato l'app dal dispositivo. Attiva e riattiva "Usa come schermata di avvio". Nel pacchetto di app sotto la nuova cartella DerivedData, LaunchScreen.nib era ancora lì.
bundle.loadNibNamed(...)
ha funzionato bene ora.
4
Se LaunchScreen è storyboard
e non un xib
, utilizzare il seguente codice.
let launchScreen = UIStoryboard(name: "LaunchScreen", bundle: nil).instantiateInitialViewController()
if let launchView = launchScreen?.view {
view.addSubview(launchView)
}
Problemi correlati
- 1. XIB over Storyboard
- 2. Accesso programmatico alla documentazione Java
- 3. È necessario fornire uno storyboard di lancio o uno xib a meno che l'app non richieda lo schermo intero
- 4. Come convertire xib nello storyboard?
- 5. Accesso programmatico alla modalità multi-finestra in Android N
- 6. Come utilizzare le immagini di lancio da un catalogo delle risorse nello storyboard di lancio?
- 7. Estrazione di pennini/xib da storyboard (iOS)
- 8. Monotouch Storyboard con controller vista xib-less
- 9. Contrassegno di alcune stringhe XIB/Storyboard come non localizzabili
- 10. Firebase + Swift: Ignora schermata di accesso utente
- 11. Caricamento di un UiviewController xib a ContainerView nello storyboard
- 12. Storyboard riferimento alla cocoapods storyboard sembra rotto
- 13. Come selezionare le viste di sfondo in uno storyboard o xib
- 14. Rimuovere lo storyboard e avviare l'app con .xib
- 15. Aggiungi sottoview usando lo storyboard senza xib esterno
- 16. Android tornare alla prima schermata
- 17. Accesso programmatico a Apple Watch Crown
- 18. Utilizzo di View Controller dallo storyboard in modo programmatico in un controller di visualizzazione pagine
- 19. Come avviare la schermata principale in modo programmatico su Android
- 20. Accesso programmatico a "Barra di sistema" in Android?
- 21. Come si implementa una schermata di accesso in GWT?
- 22. Accesso programmatico a dati finanziari storici dettagliati
- 23. Accesso programmatico a MultiPartConfig in Servlet 3.0
- 24. API Google iOS Auth2 Accesso schermata vuota
- 25. Spring Security - Accesso programmatico senza password
- 26. Ottenere la posizione dell'annotazione relativa alla schermata
- 27. trascinare le icone alla schermata iniziale
- 28. iOS XCode LaunchScreen Storyboard non visualizzato
- 29. Accesso alla webcam multipiattaforma
- 30. Accesso programmatico ai dettagli quota di Google App Engine
Xcode non stava generando il NIB per la schermata di avvio in modo che questo codice si arrestasse in modo anomalo. Se il NIB non è nel bundle, 'bundle.loadNibNamed (...)' non funziona. Sono stato in grado di farlo funzionare giocando con l'opzione "Usa come schermata di avvio" in Interface Builder che ha reso Xcode generare il NIB. – ide
@ide update Xcode, per impostazione predefinita crea LaunchScreen.xib durante la creazione del progetto stesso. –
Voglio dire che avevo LaunchScreen.xib e veniva visualizzato quando lanciavo l'app ... solo che Xcode non lo convertiva in un file NIB e lo copiava nel pacchetto. – ide