Ho creato una semplice applicazione utilizzando Xcode 7 Beta 2. L'applicazione contiene semplicemente la classe MyAppDelegate
, MyViewController
, MyMain.storyBoard
e MyLaunchScreen.storyboard
. Dopo aver ricompilato l'applicazione con Xcode 7 Beta 4, viene visualizzato l'errore "Avvio schermate potrebbe non impostare nomi di classi personalizzati". Eventuali suggerimenti?XCode 7: schermate di avvio non possono impostare nomi di classi personalizzati
risposta
Si noti che la schermata di avvio non è un controller di visualizzazione completamente personalizzabile. Non è possibile specificare un nome di classe personalizzato nello storyboard e si aspetta che il sistema ti dia la possibilità di eseguire il codice in questa fase chiamando viewDidLoad. Ricorda, l'app non è ancora stata lanciata.
Vincoli schermo lancio
- Il sistema carica il file schermata di avvio prima di lanciare l'applicazione che crea alcuni vincoli su ciò che può contenere (alcune delle quali possono costringere di nuovo a file di immagini statiche):
- l'applicazione non è ancora caricato in modo che la gerarchia della vista non esiste e il sistema non può chiamare qualsiasi codice di impostazione del controller visualizzazione personalizzata si può avere in app (ad es viewDidLoad)
- è possibile utilizzare solo le classi UIKit standard, in modo da poter utilizzare UIView o UIViewController ma no t una sottoclasse personalizzata. Se si tenta di impostare una classe personalizzata si otterrà un errore di configurazione illegale in Xcode.
- Il file della schermata di avvio può utilizzare solo visualizzazioni UIKit di base come UIImageView e UILabel. Non è possibile utilizzare UIWebView.
- Se si utilizza uno storyboard, è possibile specificare più controller di visualizzazione ma esistono ancora alcune limitazioni. Ad esempio, è possibile incorporare i controller di visualizzazione in un controller di navigazione o barra delle linguette, ma classi di contenitori più complesse come UISplitViewController non funzionano (almeno non ancora).
- La localizzazione del file della schermata di avvio al momento non sembra avere alcun effetto. La localizzazione di base è sempre usata, quindi probabilmente vorrai evitare il testo sulla schermata di avvio.
- Non è possibile specificare diversi file di schermata di avvio per iPad e iPhone. Questo potrebbe essere un problema se si dispone di interfacce significativamente diverse per tali dispositivi, in quanto c'è solo molto che si può fare con il layout automatico e le classi di dimensioni.
Se si sta distribuendo su iOS 7, sarà comunque necessario includere i file di immagine di avvio statici. È possibile includere sia un file di schermata di avvio sia immagini di avvio statico. Dispositivi come l'iPhone 6 con iOS 8 userà il file della schermata di avvio mentre i dispositivi iOS 7 torneranno alle immagini di avvio.
Per maggiori dettagli clicca here
Passare attraverso la visualizzazione controller in Main.storyboard e assicurarsi che non si dispone di uno che è sia insieme ad una classe personalizzata:
e ha "è View controller iniziale" controllato:
È possibile eseguire solo l'uno o l'altro. In qualche modo ho avuto "Is Initial View Controller" ancora controllato per errore, e mi ci è voluto un po 'per cacciarlo!
Questa è una risposta semplice, ma qualcosa che ho fatto e non lo sapevo nemmeno. Penso che con iOS 7 ci sia ora una main.storyboard e una launchscreen.storyboard. Stavo involontariamente cercando di costruire il mio schermo funzionale iniziale sulla schermata di avvio screen.storyboard. Questo è un no no
Spero che questo aiuti e felice codifica!
Di recente ho creato un'app utilizzando la versione beta di Xcode 8 ma non ho potuto inviarla all'app store utilizzando il software beta. Ho avuto lo stesso messaggio di errore: "Le schermate di avvio non possono impostare nomi di classi personalizzati" e molti altri.
La mia soluzione: Vai a File Inspector dello storyboard principale e deseleziona l'opzione Usa come schermata di avvio. Semplice, vero? Spero che questo funzioni anche per te.
trovato la soluzione: avevo bisogno di aprire il mio file di story board schermata di avvio e rimuovere la classe personalizzata nella finestra di ispezione identità. Non è più possibile utilizzare classi personalizzate per le schermate di avvio. – Awsed