web-dev-qa-db-fra.com

iOS 8: l'écran de démarrage StoryBoard apparaît en noir [un fichier XIB unique fonctionne correctement]

J'ai donc essayé de créer un storyboard de lancement pour mon application iOS 8 en utilisant ce tutoriel

Cependant, je ne reçois qu'un écran noir lorsque je lance mon application. Un fichier screen.xib de lancement unique fonctionne parfaitement. Toutefois, lorsque j'essaie d'utiliser un scénario, il ne fonctionne pas. 

J'ai essayé un storyboard avec un seul contrôleur de vue, mais il me donne toujours un écran noir. Je pense donc que le problème est lié aux fichiers de storyboard dans ma configuration. Des idées?

[XCode version 6.4]

EDIT: Je tiens donc à préciser que l’écran de lancement apparaît en noir. Le scénario principal lui-même apparaît correctement lorsque l'application est terminée. 

12
Darvish Kamalia

Lisez le didacticiel et testez-le. Il ne dit pas deux choses:

1: Vous devez ajouter une UIViewController à votre fichier .storyboard, puis le sélectionner en tant que contrôleur initial.

2: Si vous souhaitez modifier davantage que l'écran de lancement, vous devez accéder aux paramètres du projet et définir "Interface principale" sur votre .storyboard correspondant. 

Une fois que cela est fait, tout ce que vous avez à faire est d’éditer les connexions UIButton/Label/etc vers vos classes ViewController.

MODIFIER:

Pour plus de clarté, vous pouvez définir UIView comme contrôleur initial en le sélectionnant dans son fichier de scénario respectif, puis en ouvrant l'inspecteur d'attributs. L'option "Est-ce que le contrôleur initial" est vers le milieu.

18
CraftMcMatt

Pour les personnes utilisant UIImageView dans l'écran de lancement

Assurez-vous que vous utilisez le nom d'image sans l'extension dans l'inspecteur d'attributs.

Ainsi, par exemple, si votre fichier image s'appelle launcher.png, utilisez uniquement launcher comme nom d'image.

Cela montrera l'image comme non valide (?) Dans l'éditeur mais montrera correctement lorsqu'il est exécuté sur le périphérique.

(Ne me demandez pas pourquoi cela fonctionne de cette façon. Demandez à Apple.)}

 enter image description here

12
Ehtesham Hasan

Aucune des réponses n’ayant toutes les étapes requises, d’où cette solution exhaustive.

Storyboard

Commencez par créer le LaunchScreen.storyboard . Xcode> Fichier> Nouveau> Fichier ...> Storyboard> LaunchScreen.storyboard et ajoutez-le à toutes les cibles appropriées.
Dans ce storyboard, créez un seul contrôleur de vue de type UIViewController. Faites toute la magie requise par votre écran de lancement, puis suivez ces étapes:

  1. LaunchScreen.storyboard> Afficher l'inspecteur de fichier> Utiliser comme écran de lancement
  2. LaunchScreen.storyboard> Voir le contrôleur> Afficher l'inspecteur d'attributs> Is Initial View Controller
  3. Projet> Général> Informations de déploiement> Interface principale> LaunchScreen
    Répétez pour [iPhone] et [iPad]
  4. Projet> Général> Icônes d'application et images de lancement> Fichier d'écran de lancement> LaunchScreen
  5. Si configuré correctement, votre Info.plist doit avoir LaunchScreen .storyboard, sans le .storyboard sous les propriétés UILaunchStoryboardName & UIMainStoryboardFile:

    <key>UILaunchStoryboardName</key>
    <string>LaunchScreen</string>
    <key>UIMainStoryboardFile</key>
    <string>LaunchScreen</string>
    

Remarques:

  1. Ceci est pas incompatible avec des images héritées d'anciens appareils utilisant les fichiers d'écran de lancement> Actifs .
  2. Portez une attention particulière à LaunchScreen.storyboard et Main.storyboard. L'un est utilisé pour le lancement, l'autre pour le point d'entrée de votre application. Ils doivent tous les deux avoir Is Initial View Controller set.
8
SwiftArchitect

Dans le storyboard, que vous utilisez pour le lancement, assurez-vous que vous avez sélectionné l'option Est-ce que le contrôleur de vue initial est présent pour le contrôleur de vue unique.

5
Davinder Singh

Je crois que j'ai peut-être eu un problème similaire qui nécessitait quelque chose d'un peu différent des réponses ci-dessus.

J'ai créé un nouvel écran de lancement dans un fichier .storyboard, puis après l'avoir masqué, j'ai créé un nouveau fichier .xib qui n'apparaissait toujours pas au lancement de l'application.

J'ai compris que certaines des images que j'avais sur mon écran de lancement avaient une collection de prises dans un ancien fichier .Swift. Après avoir supprimé cela du LaunchScree.xib, l’écran de lancement a bien fonctionné.

 the broken outlet

Notez le dernier signe d’avertissement dans la référence de la prise ->  The warning

4
Dom Bryan

Assurez-vous que vous définissez votre point d'entrée et que dans vos informations générales, appuyez sur vous pour que la vue soit redimensionnée depuis le point nib Assurez-vous également que le point de départ est défini dans votre onglet général. Dans les informations de déploiement.

J'espère que cela t'aides

1
MazzaMan

J'ai passé beaucoup trop de temps là-dessus, merci Apple! J'ai finalement découvert que je devais supprimer le véritable UIImageView dans mon contrôleur de vue - pas seulement l'image - pour pouvoir changer d'image. J'ai essayé de renommer les images, de les remplacer de différentes manières, de supprimer des caches, de supprimer l'application du périphérique, de nettoyer avant la construction. L'image originale avait disparu de tout ce que je pouvais voir mais elle apparaissait toujours. Enfin, j'ai ajouté un nouveau UIImageView au sommet du contrôleur de vue, ce qui a pris une nouvelle image. Ensuite, je viens de supprimer le vieux UIImageView et tout allait bien.

1
amergin

J'avais l'écran noir au lieu de mon splash après avoir localisé mon application. Dans la section Localisation de l'inspecteur de fichier de LaunchScreen.storyboard, il n'y avait qu'une coche pour une localisation. J'ai donc coché la deuxième localisation, ce qui a résolu le problème.

0
Valentin Shamardin

La solution est d'utiliser le nom de l'image sans l'extension png.

Par exemple, si votre fichier image s'appelle "img.png", utilisez uniquement "img".

Cela affichera l'image comme non valide (?) Dans l'éditeur, mais s'affichera correctement lors de l'exécution.

Cela est dû au fait que LaunchScreen.storyboard accepte uniquement les images de Assets.xcassets et que la manière de référencer les images de Assets.xcassets est le nom de la ressource sans extension.

Je pense que l'utilisation du nom sans extension est une solution de contournement qui fonctionne.

0
kennymuse

Avez-vous défini l'interface principale sur "Principal" (nom du storyboard) dans Informations de déploiement correctement?

0
Avijit Nagare