Während dieser Thread alt ist, habe ich keine Antwort gesehen, die beschreibt, was für mich funktioniert hat.
Ich hatte diesen Fehler und eine visuelle Untersuchung des Storyboards ergab, dass alle View Controller mit dem Root View Controller verbunden zu sein schienen.
Ich habe versucht, alle 17 View-Controller im Storyboard zu benennen (wie in der Antwort von @ bobnoble). Ich habe eine Namenskonvention verwendet, die auf dem langen Namen des View Controllers basiert, z. B. "jvc" für "Jobs View Controller". Beim Versuch zu erstellen wurde eine Fehlermeldung angezeigt, die darauf hinwies, dass einer der View-Controller einen doppelten Namen hat. Als ich die Dinge aufspürte, stellte ich fest, dass ich ein tatsächliches Duplikat hatte eines View-Controllers hatte, das genau auf seinem Zwilling gestapelt war. Ich vermute, es war ein Schaden durch Ausschneiden und Einfügen durch ein Experiment mit der Benutzeroberfläche, den ich nicht vollständig zurückgezogen habe.
Wie auch immer, das Löschen des nicht verbundenen Zwillings löste mein Problem. Danach habe ich alle VC-Namen entfernt, da sie im Code nicht referenziert sind.
Storyboard ID
Wählen Sie in Ihrem Storyboard jeden View Controller aus (roter Pfeil im Bild unten) und sehen Sie sich das Feld Storyboard-ID (rotes Oval) an. Keines der Storyboard-ID-Felder sollte leer sein. Wenn Sie einen finden, der ist, ist das der Schuldige.
quelle
Storyboard ID
die Warnung entfernteUINavigationController
für mehrereUIViewControllers
und musste eine Kennung für alle von ihnen setzen, auch wenn ich nie eine von ihnen durch Kennung nenne. Wirklich nervig, auf der Suche nach einem Bug, wo niemand ist!Ich hatte gerade genau diesen Fehler mit einem einfachen Storyboard mit einer Szene, und alles, was ich tun musste, um ihn zu beheben, war das Kontrollkästchen "Ist Initial View Controller" für den 1 View Controller im Storyboard zu aktivieren. Ich vermute, dass Xcode in dieser Situation standardmäßig dieses Kontrollkästchen für Sie aktiviert hat, dies jedoch nicht mehr.
Aktivieren Sie das Kontrollkästchen für genau einen der View-Controller in Ihrem Storyboard, und Sie sollten gut sein.
quelle
Ich fürchte, Sie müssen alle 30 durchgehen und prüfen, ob sie eine Storyboard-ID oder einen Übergang zu diesem Ansichts-Controller haben. Einer der beiden ist erforderlich, beide sind ebenfalls eine Option.
quelle
Dieses Problem kann in einem der folgenden Szenarien auftreten:
Fall I: Wenn keine der Szenen im Storyboard als "isInitialViewController" markiert ist .
Fix: Identifizieren Sie den Root View Controller und markieren Sie ihn in Ihrem SB als "isInitialViewController" . In diesem Fall ist die Storyboard-ID nicht obligatorisch.
Fall II
Es kann Situationen geben, in denen Sie keinen initialViewController in einem Storyboard benötigen. Zum Beispiel: bei Verwendung mehrerer Storyboards.
Fix: Stellen Sie in solchen Fällen sicher, dass die "Storyboard-ID" korrekt angegeben ist und Sie mit dieser ID auf die erste Szene verweisen, die im Storyboard verwendet wird. Zum Beispiel:
In diesem Fall ist "Storyboard-ID" obligatorisch.
Fall III
Sie haben Ihren initialViewController angeschlossen. Trotzdem erhalten Sie diese Warnung. Dies liegt daran, dass einige der Szenen im Storyboard möglicherweise nicht mit einem "Segue" verbunden sind und auch keine "Storyboard-ID" haben . Scannen Sie Ihr Storyboard und prüfen Sie, ob ein "Segue" erforderlich ist. Schließen Sie den Segue an, wenn dieser fehlt. Wenn kein Segue benötigt wird, müssen Sie eine "Storyboard-ID" angeben. da dies die einzige Möglichkeit ist, die Szene aus Ihrem Code zu referenzieren, wie im obigen Beispielcode gezeigt.
Hoffe das hilft
quelle
Sie müssen nicht
Storyboard ID
für alle Szenen oder einstellenUINavigationController
Nun, ich habe ungefähr 50-60 Szenen und ich habe gerade diese Warnung erhalten, damit mir klar wird, dass nur der Controller (Szene) oder der Navigationscontroller, der nicht mit segue verbunden ist, eingestellt werden muss
Storyboard ID
.Sie können sehen, dass das obige Bild
UINavigationController
nicht mit Segue verbunden ist, es war ein Schuldiger dieser Warnung.Geben Sie ihm einfach eine Storyboard-ID, um diese Warnung zu entfernen.
quelle
Ich hatte das gleiche Problem. Ich habe viele Ansichten auf meinem Storyboard mit einem Navigations- und Registerkarten-Controller. Für mich war es nur eine Warnung, Sie wissen zu lassen, dass einige der Ansichten nicht miteinander verbunden sind. Stellen Sie sicher, dass alle Ihre Ansichten in irgendeiner Weise mit dem Root-View-Controller verbunden sind . Ich habe dieses Projekt von Grund auf neu gestartet, um diese Warnung zu entfernen, und habe dieselbe Warnung bemerkt, wenn keine Ansicht verbunden war.
quelle
Einfachster Weg, um die beleidigende Szene zu finden:
Gehen Sie zum Problemnavigator (im linken Bereich neben der Suchschaltfläche) und doppelklicken Sie auf den Fehler. Ein Fenster mit der betreffenden Szene in der Mitte des Fensters wird angezeigt.
(Dies ist im Allgemeinen der Fall - ein Doppelklick auf einen Fehler führt im Allgemeinen zu einem Popup mit dem Fehler zentriert - ein kleiner Trick!)
Randnotiz: Manchmal gibt XCode diesen Fehler fälschlicherweise für eine Szene aus, die der Root-View-Controller eines Navigations-Controllers ist (dh der anfängliche View-Controller). Eine einfache Lösung besteht darin, diesem Root-View-Controller eine Storyboard-ID zu geben, zu kompilieren (Fehler sollte verschwinden) und dann die Storyboard-ID zu entfernen (kein Fehler mehr).
quelle
Der einfachste Weg, um festzustellen, welcher Controller oder welche Szene dieses Problem verursacht, ist:
.storyboard
bei gedrückter Strg-Taste im Projektnavigator auf und wählen SieOpen As > Source Code
. Dadurch wird das zugrunde liegende XML des Storyboards aufgerufen.In meinem Fall war die Warnung besonders ärgerlich, weil die "beleidigende Szene" eine Kennung und einen Übergang hatte! Ich konnte das Problem beheben, indem ich die Szene löschte und dann das Löschen rückgängig machte. Nicht elegant, aber funktioniert. Ich habe mein Storyboard zuvor gespeichert. Im Nachhinein hätte ich eine Kopie machen und
diff
das Vorher-Nachher machen sollen.quelle
Source Code
Ansicht zeigt den Fehler nicht an. Der Kilometerstand kann also variieren.Für mich war es nicht wegen a
Storyboard ID
oder aSegue
. Ich erhielt diese Warnung, weil ich die nicht eingestellt hatteView Controller's Custom Class
.Wählen Sie die
View Controller
auf dieStoryboard
dann in dieUtilities Pane
, die wählenIdentity Inspector
Symbol.Custom Class
Sehen Sie unter , welcher Wert sich innerhalb desClass
Feldes befindet.Wenn nur angezeigt wird
UIViewController
, müssen Sie den Klassennamen eingeben. Dies ist der Name Ihrer.h
und der.m
Dateien, aus denen Ihre benutzerdefinierteUIViewController
Unterklasse besteht.quelle
Ich bin heute zu dieser Frage gekommen. Ich verwende Xcode 6.3 und die Antwort auf die Frage des OP ist jetzt ganz einfach:
Wählen Sie den View Controller aus, der der erste sein soll, zeigen Sie den Attributinspektor an und stellen Sie im Abschnitt View Controller sicher, dass
Ist Initial View Controller
wird geprüft. Voilà!
quelle
Mit Xcode 7 kann dies einfach gehandhabt werden. Es ist nicht erforderlich, alle Szenen manuell durchzugehen, um eine problematische zu finden. Gehen Sie zuerst zum Berichtsnavigator , in dem Sie detailliertere Informationen zu bekannten Problemen erhalten. Die Problembeschreibung kann folgendermaßen aussehen:
Base.lproj / Main.storyboard: fPh-fe-F5F : Warnung: Die Szene ist aufgrund fehlender Einstiegspunkte nicht erreichbar und hat keine Kennung für den Laufzeitzugriff über -instantiateViewControllerWithIdentifier:.
Mit diesen Informationen können Sie die Objekt-ID, in diesem Fall fPh-fe-F5F , kopieren und den Arbeitsbereich nach dem Auftreten dieser Zeichenfolge durchsuchen. Die Zeichenfolge befindet sich in der Datei Main.storyboard. Doppelklicken Sie auf das Suchergebnis und es wird Main.storyboard mit der ausgewählten Szene geöffnet. Sobald Sie eine problematische Szene kennen, können Sie das Problem einfach beheben, indem Sie die Storyboard-ID oder "Is Initial View Controller" festlegen.
quelle
Sie können einfach eine Kennung festlegen. Im Attributinspektor im rechten Bereich finden Sie ein Feld mit dem Namen "Bezeichner". Fügen Sie einfach eine Zeichenfolge ein, dies sollte funktionieren
Sie können auf den Navigationscontroller klicken und unter dem Attributinspektor auf die Schaltfläche "Erstansichtscontroller" klicken. Dies sollte auch funktionieren.
quelle
Ich stand vor dem gleichen Problem und löste mit der aufgesetzten Storyboard-ID jede Kennung für alle viewController und NavigationController. Der Fehler wird sofort behoben
genießen!!!
quelle
Vielleicht hilft Ihnen diese XQuery, diese fiesen Szenen zu finden
Wenn Sie xqilla installiert haben, speichern Sie die Abfrage in einer Datei und verwenden sie wie folgt
quelle
Ich weiß nicht, ob dies noch nicht erwähnt wurde oder nicht, aber ein weiterer Grund, warum Sie diese Warnung erhalten könnten, ist, wenn Sie einen Übergang in die falsche Richtung haben. In meinem Projekt wurde beispielsweise diese Warnung angezeigt, aber alle meine Controller waren tatsächlich verbunden. Einer von ihnen hatte jedoch einen Übergang, der im Grunde versuchte, den Elternteil vom Kind zu präsentieren, anstatt dass der Elternteil das Kind präsentierte. Dies verursachte die gleiche Warnung.
quelle
Ich habe diese Warnung erhalten, wenn ich einen UIViewController im Storyboard habe, auf den nichts eingestellt ist. Ich habe diese Warnung vermieden, indem ich die Storyboard-ID darauf gesetzt habe.
quelle
Ich hatte das gleiche Problem, aber mir wurde klar, dass ich die Containeransicht verwendete, und anstatt den Standardansichtscontroller zu löschen, löschte ich seinen Abschnitt. So blieb der Ansichtscontroller im Storyboard, ebenso wie die Warnung. Dies ist einer der Fälle, in denen eine Warnung angezeigt wird, wenn der Standardansichts-Controller der Containeransicht nicht ordnungsgemäß gelöscht wird, wenn Sie ihn nicht benötigen.
quelle
Ich habe alles, was oben beschrieben wurde, ohne Erfolg versucht. Ich hatte alles richtig in IB verbunden, wobei genau einer
UIViewController
als Root View Controller bezeichnet wurde. Ich hatte keine Kennungen, fügte sie aber allen meinen Controllern hinzu.Die einzige Möglichkeit, die Warnung zum Verschwinden zu bringen, bestand darin, alles oben Genannte zu tun (einschließlich eines Neustarts des Computers und eines sauberen Builds) und dann zu einem fehlerfreien Zweig meines Projekts in Git und wieder zurück zu wechseln.
Unsicher, welche Aktion es behoben hat oder welche Kombination von Aktionen, aber es war nicht der saubere Build für sich. Dies kann ein Nebenprodukt von Main.storyboard sein, das sich beim einfachen Öffnen ständig ändert, was bedeutet, dass ich
git commit -m "Stupid storyboard"
öfter muss, als ich möchte.quelle
Folgendes hat bei mir funktioniert:
quelle
Ich habe den gleichen Fehler erhalten: Für mich war der Fehler, dass ich keinen View Controller in meinem Storyboard initiiert habe.
Durch das Beheben dieser Warnung wurde diese Warnung entfernt.
quelle
Es hat für mich einfach funktioniert, allen MVCs eine Storyboard-ID zu geben.
quelle