Bien que ce fil soit ancien, je n'ai pas vu de réponse décrivant ce qui a fonctionné pour moi, alors voici ...
J'ai eu cette erreur et un examen visuel du storyboard a montré que tous les contrôleurs de vue semblaient être connectés au contrôleur de vue racine.
J'ai essayé de nommer les 17 contrôleurs de vue dans le storyboard (comme dans la réponse de @ bobnoble). J'ai utilisé une convention de dénomination basée sur le nom long du contrôleur de vue, par exemple "jvc" pour "Jobs View Controller". Lorsque j'ai essayé de construire, j'ai reçu un message d'erreur indiquant que l'un des contrôleurs de vue avait un nom en double. En suivant les choses, j'ai trouvé que j'avais une copie réelle d'un contrôleur de vue empilé exactement au-dessus de son jumeau. Je soupçonne que c'était un dommage par couper-coller d'une expérience d'interface utilisateur que je n'ai pas complètement annulé.
Quoi qu'il en soit, la suppression du jumeau non connecté a résolu mon problème. Après cela, j'ai supprimé tous les noms de VC car ils ne sont pas référencés dans le code.
Storyboard ID
Dans votre storyboard, sélectionnez chacun des contrôleurs de vue (flèche rouge dans l'image ci-dessous) et regardez le champ ID du storyboard (ovale rouge). Aucun des champs ID Storyboard ne doit être vide. Lorsque vous en trouvez un, c'est le coupable.
la source
Storyboard ID
supprimait l'avertissementUINavigationController
plusieursUIViewControllers
et j'ai dû définir un identifiant pour tous, même si je n'en appelle jamais l'un par identifiant. Vraiment ennuyeux, à la recherche d'un bug où personne n'est!Je viens d'avoir cette erreur exacte avec un simple storyboard à une seule scène, et tout ce que j'avais à faire pour le réparer était de cocher la case "Est le contrôleur de vue initial" pour le contrôleur de vue 1 dans le storyboard. Je soupçonne que Xcode a coché cette case pour vous par défaut dans cette situation, mais ce n'est plus le cas.
Cochez la case pour exactement l'un des contrôleurs de vue dans votre storyboard et vous devriez être bon.
la source
J'ai bien peur que vous deviez les parcourir tous les 30 et vérifier s'ils ont un ID de Storyboard ou une transition vers ce contrôleur de vue. L'un des deux est obligatoire, les deux sont également une option.
la source
Ce problème peut se produire dans l'un des scénarios suivants:
Cas I: Si aucune des scènes du storyboard n'est marquée comme "isInitialViewController" .
Correction: identifiez le contrôleur de vue racine et marquez-le comme "isInitialViewController" dans votre SB. Dans ce cas, l'identifiant du storyboard n'est pas obligatoire.
Cas II
Il peut y avoir des situations dans lesquelles vous n'avez pas besoin d'avoir un initialViewController dans un storyboard. Par exemple: lors de l'utilisation de plusieurs storyboards.
Correction: Dans de tels cas, assurez-vous que l ' "identifiant du storyboard" est correctement donné et que vous vous référez à la première scène à utiliser dans le storyboard en utilisant cet identifiant. Par exemple:
Dans ce cas, "l'identifiant du storyboard" est obligatoire.
Cas III
Votre initialViewController est connecté. Mais vous recevez toujours cet avertissement. Ceci est dû au fait que certaines des scènes du storyboard peuvent ne pas être connectées à un "segue" et qu'elles n'ont pas non plus "d'id de storyboard" . Scannez votre storyboard, voyez si un "segue" est nécessaire. Connectez le segue si cela manque. Si une séquence n'est pas nécessaire, assurez-vous que vous devez donner un "identifiant de storyboard" car c'est le seul moyen de faire référence à la scène à partir de votre code, comme indiqué dans l'exemple de code ci-dessus.
J'espère que cela t'aides
la source
Vous n'avez pas besoin de définir
Storyboard ID
pour toutes les scènes ouUINavigationController
Eh bien, j'ai environ 50 à 60 scènes et je viens de recevoir ces avertissements afin de me rendre compte que seul le contrôleur (Scene) ou NavigationController qui n'est pas connecté à segue doit être défini
Storyboard ID
.Vous pouvez voir que dans l'image ci-dessus
UINavigationController
n'est pas lié à segue, c'était un coupable de cet avertissement.Donnez-lui simplement un ID de Storyboard pour supprimer cet avertissement.
la source
J'ai eu le même problème. J'ai beaucoup de vues sur mon storyboard avec un contrôleur de barre de navigation et d'onglets. Pour moi, c'était juste un avertissement pour vous faire savoir que certaines vues ne sont pas liées. Assurez-vous que toutes vos vues sont connectées d'une manière ou d'une autre au contrôleur de vue racine . Je commençais ce projet à partir de zéro pour éliminer cet avertissement et j'ai remarqué le même avertissement lorsqu'une vue n'était pas connectée.
la source
Le moyen le plus simple de trouver la scène incriminée:
Accédez au navigateur de problèmes (dans le panneau de gauche, à côté du bouton de recherche) et double-cliquez sur l'erreur. Une fenêtre apparaîtra contenant la scène incriminée centrée au milieu de la fenêtre.
(C'est en fait généralement vrai - un double clic sur une erreur entraînera généralement une fenêtre contextuelle contenant l'erreur centrée - une petite astuce!)
Note latérale: Parfois, XCode donnera incorrectement cette erreur pour une scène qui est le contrôleur de vue racine d'un contrôleur de navigation (c'est-à-dire le contrôleur de vue initial). Une solution simple consiste à donner à ce contrôleur de vue racine un ID de Storyboard, à compiler (l'erreur devrait disparaître), puis à supprimer l'ID de storyboard (plus d'erreur).
la source
Le moyen le plus simple de voir quel contrôleur ou quelle scène est à l'origine de ce problème est de:
.storyboard
dans le navigateur de projet et sélectionOpen As > Source Code
. Cela fera apparaître le XML sous-jacent du Storyboard.Maintenant, dans mon cas, l'avertissement était particulièrement ennuyeux car la "scène incriminée" avait un identifiant et une suite! J'ai pu remédier au problème en supprimant la scène puis en annulant la suppression. Pas élégant, mais travaillé. J'ai enregistré mon Storyboard avant de faire cela. Rétrospectivement, j'aurais dû en faire une copie et faire
diff
l'avant-après.la source
Source Code
vue ne montre pas l'erreur. Ainsi, le kilométrage peut varier.Pour moi, ce n'était pas à cause de a
Storyboard ID
ou aSegue
. Je recevais cet avertissement car je n'avais pas défini leView Controller's Custom Class
.Sélectionnez le
View Controller
sur leStoryboard
, puis dans leUtilities Pane
, sélectionnez l'Identity Inspector
icône. SousCustom Class
, voyez quelle valeur se trouve à l'intérieur duClass
champ.Si cela dit simplement
UIViewController
, vous devez saisir le nom de la classe. Ce sera le nom de vos fichiers.h
et.m
qui composent votreUIViewController
sous-classe personnalisée .la source
Je suis venu à cette question aujourd'hui. J'utilise Xcode 6.3 et la réponse à la question de l'OP est assez simple maintenant:
Sélectionnez le contrôleur de vue que vous souhaitez être le premier, affichez l'inspecteur d'attributs, et sous la section Contrôleur de vue, assurez-vous
Est le contrôleur de vue initiale
est vérifié. Voilà!
la source
Avec Xcode 7, cela peut être géré facilement. Il n'est pas nécessaire de parcourir manuellement toutes les scènes pour en trouver une problématique. Accédez d'abord au navigateur de rapports , où vous pouvez obtenir des informations plus détaillées sur les problèmes connus. La description du problème peut ressembler à ceci:
Base.lproj / Main.storyboard: fPh-fe-F5F : avertissement: la scène est inaccessible en raison du manque de points d'entrée et n'a pas d'identifiant pour l'accès à l'exécution via -instantiateViewControllerWithIdentifier :.
Avec cette information, vous pouvez copier l'ID de l'objet, dans ce cas, c'était fPh-fe-F5F , et rechercher dans l'espace de travail l'occurrence de cette chaîne. La chaîne se trouve dans le fichier Main.storyboard. Double-cliquez sur le résultat de la recherche et il sera ouvert Main.storyboard avec la scène sélectionnée. Une fois que vous connaissez une scène problématique, vous pouvez facilement résoudre le problème, en définissant l'ID du storyboard ou en définissant "Is Initial View Controller"
la source
Vous pouvez simplement définir un identifiant. Sur l'inspecteur d'attributs dans le volet droit, vous trouverez un champ appelé "Identifiant". Il suffit de mettre une chaîne là-dedans, cela devrait fonctionner
Vous pouvez cliquer sur le contrôleur de navigation et sous l'inspecteur d'attributs, cliquer sur le bouton "est le contrôleur de vue initial", et cela devrait également fonctionner.
la source
J'ai fait face au même problème et résolu avec mis sur l'ID de storyboard n'importe quel identifiant pour tous viewController et NavigationController également; l'erreur sera supprimée immédiatement
prendre plaisir!!!
la source
Peut-être que cette XQuery vous aidera à trouver ces scènes désagréables
Si vous avez installé xqilla, vous enregistrez la requête dans un fichier et l'utilisez comme
la source
Je ne sais pas si cela n'a pas encore été mentionné ou non, mais une autre raison pour laquelle vous pourriez recevoir cet avertissement est si vous avez une séquence qui va dans la mauvaise direction. Par exemple, dans mon projet, je recevais cet avertissement mais tous mes contrôleurs étaient en fait connectés. Cependant, l'un d'entre eux avait une suite qui consistait essentiellement à essayer de présenter le parent de l'enfant au lieu du parent présentant l'enfant. Cela a provoqué le même avertissement.
la source
J'ai reçu cet avertissement lorsque j'ai un UIViewController dans Storyboard sur lequel rien n'est défini. J'ai évité cet avertissement en lui attribuant un ID de Storyboard.
la source
J'ai eu le même problème, mais j'ai réalisé que j'utilisais la vue du conteneur et au lieu de supprimer le contrôleur de vue par défaut, j'ai supprimé sa séquence.Le contrôleur de vue est donc resté dans le storyboard, tout comme l'avertissement. C'est donc l'un des cas où un avertissement apparaît si le contrôleur de vue par défaut de la vue du conteneur n'est pas supprimé correctement lorsque vous n'en avez pas besoin.
la source
J'ai essayé tout ce qui est décrit ci-dessus en vain. J'avais tout connecté correctement dans IB, avec exactement un
UIViewController
désigné le contrôleur de vue racine. Je n'avais aucun identifiant mais je les ai ajoutés à tous mes contrôleurs.La seule façon de faire disparaître l'avertissement était de faire tout ce qui précède (y compris un redémarrage de l'ordinateur et une version propre), puis de passer à une branche sans erreur de mon projet dans git et inversement.
Je ne sais pas quelle action l'a corrigé, ou quelle combinaison d'actions, mais ce n'était pas la construction propre en soi. Cela pourrait être un sous-produit de Main.storyboard qui change toujours lors de sa simple ouverture, ce qui signifie que je dois le faire
git commit -m "Stupid storyboard"
plus souvent que je ne le souhaite.la source
Voici ce qui a fonctionné pour moi:
la source
J'ai eu la même erreur: pour moi, l'erreur était que je n'avais pas lancé de contrôleur de vue dans mon storyboard.
La correction de cela a supprimé cet avertissement.
la source
Le simple fait de donner à tous les MVC un identifiant de storyboard a fonctionné pour moi.
la source