web-dev-qa-db-fra.com

XCode 7: les écrans de lancement peuvent ne pas définir de noms de classe personnalisés

J'ai créé une application simple en utilisant Xcode 7 Beta 2. L'application contient simplement la classe MyAppDelegate, MyViewController, MyMain.storyBoard et MyLaunchScreen.storyboard. Après avoir recompilé l'application avec Xcode 7 Beta 4, l'erreur "Les écrans de lancement peuvent ne pas définir de noms de classe personnalisés" apparaît. Aucune suggestion?

35
Awsed

Notez que l'écran de lancement n'est pas un contrôleur de vue entièrement personnalisable. Vous ne pouvez pas spécifier un nom de classe personnalisé dans le storyboard et vous attendre à ce que le système vous donne la possibilité d'exécuter du code à ce stade en appelant viewDidLoad. N'oubliez pas que l'application n'a pas encore été lancée.

Lancer les contraintes d'écran

  • Le système charge le fichier d'écran de lancement avant de lancer l'application, ce qui crée des contraintes sur ce qu'il peut contenir (dont certaines peuvent vous forcer à revenir aux fichiers d'images statiques):
  • L'application n'est pas encore chargée, la hiérarchie des vues n'existe pas et le système ne peut appeler aucun code de configuration de contrôleur de vue personnalisé que vous pourriez avoir dans l'application (par exemple, viewDidLoad)
  • Vous ne pouvez utiliser que des classes UIKit standard, vous pouvez donc utiliser UIView ou UIViewController mais pas une sous-classe personnalisée. Si vous essayez de définir une classe personnalisée, vous obtiendrez une erreur de configuration illégale dans Xcode.
  • Le fichier d'écran de lancement ne peut utiliser que des vues UIKit de base telles que UIImageView et UILabel. Vous ne pouvez pas utiliser un UIWebView.
  • Si vous utilisez un storyboard, vous pouvez spécifier plusieurs contrôleurs de vue, mais il y a encore des limitations. Par exemple, vous pouvez incorporer des contrôleurs de vue dans un contrôleur de navigation ou de barre d'onglets, mais des classes de conteneurs plus complexes telles que UISplitViewController ne fonctionnent pas (du moins pas encore).
  • La localisation du fichier d'écran de lancement ne semble actuellement pas avoir d'effet. La localisation de base est toujours utilisée, vous voudrez probablement éviter le texte sur l'écran de lancement.
  • Vous ne pouvez pas spécifier différents fichiers d'écran de lancement pour iPad et iPhone. Cela peut être un problème si vous disposez d'interfaces considérablement différentes pour ces appareils, car vous ne pouvez pas faire grand-chose avec la disposition automatique et les classes de taille.

Si vous déployez sur iOS 7, vous devrez toujours inclure les fichiers d'image de lancement statiques. Vous pouvez inclure à la fois un fichier d'écran de lancement et des images de lancement statiques. Les appareils tels que l'iPhone 6 exécutant iOS 8 utiliseront le fichier d'écran de lancement tandis que les appareils iOS 7 retourneront aux images de lancement.

Pour plus de détails, veuillez cliquer sur ici

40
KTPATEL

C'est une réponse simple, mais quelque chose que j'ai fait et que je ne savais même pas. Je pense qu'avec iOS 7, il y a maintenant un main.storyboard et un launchscreen.storyboard. J'essayais involontairement de construire mon écran fonctionnel initial sur le screen.storyboard de lancement. C'est non non.

J'espère que cela aide et que le codage est heureux!

25
justagruvn

Parcourez vos contrôleurs de vue dans Main.storyboard et assurez-vous que vous n'en avez pas un qui est à la fois défini dans une classe personnalisée:

enter image description here

et a coché "Is Initial View Controller":

enter image description here

Vous ne pouvez faire que l'un ou l'autre. D'une manière ou d'une autre, "Is Initial View Controller" était toujours vérifié par erreur, et il m'a fallu un certain temps pour le traquer!

7
Josh

J'ai récemment créé une application à l'aide de la version bêta de Xcode 8, mais je n'ai pas pu la soumettre à l'App Store à l'aide du logiciel bêta. J'ai eu le même message d'erreur: "Les écrans de lancement peuvent ne pas définir de noms de classe personnalisés" et plusieurs autres.

Ma solution: Accédez à l'inspecteur de fichiers du storyboard principal et désélectionnez l'option Utiliser comme écran de lancement. C'est simple, non? J'espère que cela fonctionne aussi pour vous.

Voici une image de ce qu'il faut rechercher

5
Terence Williams