Si bien este hilo es antiguo, no vi una respuesta que describiera lo que funcionó para mí, así que aquí va ...
Tuve este error y el examen visual del guión gráfico mostró que todos los controladores de vista parecían estar conectados al controlador de vista raíz.
Intenté nombrar los 17 controladores de vista en el guión gráfico (como en la respuesta de @ bobnoble). Usé una convención de nomenclatura basada en el nombre largo del controlador de vista, por ejemplo, "jvc" para "Controlador de vista de trabajos". Cuando intenté compilar, recibí un mensaje de error que indicaba que uno de los controladores de vista tenía un nombre duplicado. Al rastrear las cosas, descubrí que tenía un duplicado real de un controlador de vista apilado exactamente encima de su gemelo. Sospecho que fue un daño de cortar y pegar de un experimento de interfaz de usuario que no eché atrás por completo.
De todos modos, eliminar el gemelo no conectado resolvió mi problema. Después de eso, eliminé todos los nombres de VC ya que no están referenciados en el código.
Storyboard ID
En su guión gráfico, seleccione cada uno de los controladores de vista (flecha roja en la imagen a continuación) y mire el campo ID del guión gráfico (óvalo rojo). Ninguno de los campos de Id. Del guión gráfico debe estar en blanco. Cuando encuentre uno que sea, ese es el culpable.
fuente
Storyboard ID
eliminó la advertenciaUINavigationController
variosUIViewControllers
y tuve que establecer un identificador para todos ellos, incluso nunca llamo a uno de ellos por identificador. Realmente molesto, ¡buscar un error donde no hay nadie!Acabo de tener este error exacto con un guión gráfico simple de una sola escena, y todo lo que tenía que hacer para solucionarlo era marcar la casilla de verificación "Es controlador de vista inicial" para el controlador de 1 vista en el guión gráfico. Sospecho que Xcode solía marcar esta casilla de forma predeterminada en esta situación, pero ya no lo hace.
Marque la casilla de exactamente uno de los controladores de vista en su guión gráfico y debería estar bien.
fuente
Me temo que tendrá que revisar los 30 y verificar si tienen una ID de Storyboard o una transición a ese controlador de vista. Se requiere uno de los dos, ambos también son una opción.
fuente
Este problema puede ocurrir en uno de los siguientes escenarios:
Caso I: si ninguna de las escenas del guión gráfico está marcada como "isInitialViewController" .
Solución: identifique el controlador de vista raíz y márquelo como "isInitialViewController" en su SB. En este caso, la identificación del guión gráfico no es obligatoria.
Caso II
Puede haber situaciones en las que no necesite tener un InitialViewController en un guión gráfico. Por ejemplo: cuando se utilizan varios guiones gráficos.
Solución: en tales casos, asegúrese de que la "identificación del guión gráfico" se proporcione correctamente y consulte la primera escena que se utilizará en el guión gráfico con esta identificación. Por ejemplo:
En este caso, la "identificación del guión gráfico" es obligatoria.
Caso III
Tiene su initialViewController conectado. Pero aún recibes esta advertencia. Esto se debe a que algunas de las escenas en el guión gráfico pueden no estar conectadas con una "secuencia" y tampoco tienen una "identificación del guión gráfico" . Escanee su guión gráfico, vea si se necesita una "transición" . Conecte el segue si falta. Si no se necesita una segue, asegúrese de que debe proporcionar una "identificación del guión gráfico", ya que es la única forma de hacer referencia a la escena desde su código, como se muestra en el código de ejemplo anterior.
Espero que esto ayude
fuente
No es necesario configurar
Storyboard ID
todas las escenas oUINavigationController
Bueno, tengo alrededor de 50-60 escenas y acabo de recibir estas advertencias para darme cuenta de que solo el controlador (Scene) o NavigationController que no está conectado con segue debe configurarse
Storyboard ID
.Puede ver que en la imagen de arriba
UINavigationController
no está conectado con segue, fue el culpable de esa advertencia.Solo dale una ID de Storyboard para eliminar esta advertencia.
fuente
Tuve el mismo problema. Tengo muchas vistas en mi guión gráfico con un controlador de barra de pestañas y navegación. Para mí, fue solo una advertencia para hacerle saber que algunas de las vistas no están conectadas. Asegúrese de que todas sus vistas estén conectadas de alguna manera al controlador de vista raíz . Estaba comenzando este proyecto desde cero para eliminar esta advertencia y noté la misma advertencia cuando una vista no estaba conectada.
fuente
La forma más sencilla de encontrar la escena delictiva:
Vaya al navegador de problemas (en el panel izquierdo, junto al botón de búsqueda) y haga doble clic en el error. Aparecerá una ventana que contiene la escena delictiva centrada en el medio de la ventana.
(En realidad, esto es cierto en general: hacer doble clic en cualquier error generalmente dará como resultado una ventana emergente que contiene el error centrado, ¡un pequeño truco genial!)
Nota al margen: A veces, XCode dará incorrectamente este error para una escena que es el controlador de vista raíz de un controlador de navegación (que es el controlador de vista inicial). Una solución simple es darle a este controlador de vista raíz un Storyboard ID, compilar (el error debería desaparecer) y luego eliminar el storyboardID (ya no hay errores).
fuente
La forma más fácil de ver qué controlador o escena está causando este problema es:
.storyboard
en su en el Navegador de proyectos y seleccioneOpen As > Source Code
. Esto mostrará el XML subyacente del Storyboard.Ahora, en mi caso, la advertencia fue particularmente molesta porque la "escena ofensiva" tenía un identificador y una secuencia. Pude solucionar el problema eliminando la escena y luego deshaciendo la eliminación. No elegante, pero trabajado. Guardé mi Storyboard antes de hacer esto. En retrospectiva, debería haber hecho una copia y hacer
diff
el antes y el después.fuente
Source Code
vista no muestra el error. Por tanto, el kilometraje puede variar.Para mí, no fue por una
Storyboard ID
o unaSegue
. Recibí esta advertencia porque no había configurado elView Controller's Custom Class
.Seleccione
View Controller
en elStoryboard
, luego en elUtilities Pane
, seleccione elIdentity Inspector
icono. DebajoCustom Class
, vea qué valor hay dentro delClass
campo.Si solo dice
UIViewController
, entonces debe escribir el nombre de la clase. Este será el nombre de sus archivos.h
y.m
que componen suUIViewController
subclase personalizada .fuente
Llegué a esta pregunta hoy. Estoy usando Xcode 6.3 y la respuesta a la pregunta del OP es bastante simple ahora:
Seleccione el controlador de vista que desea que sea el primero, muestre el inspector de atributos y, en la sección Controlador de vista, asegúrese de
Es el controlador de vista inicial
está chequeado. ¡Voilà!
fuente
Con Xcode 7, esto se puede manejar fácilmente. No es necesario revisar manualmente todas las escenas para encontrar una problemática. Primero, vaya al navegador de informes , donde puede obtener información más detallada sobre problemas conocidos. La descripción del problema puede verse así:
Base.lproj / Main.storyboard: fPh-fe-F5F : advertencia: No se puede acceder a la escena debido a la falta de puntos de entrada y no tiene un identificador para el acceso en tiempo de ejecución a través de -instantiateViewControllerWithIdentifier :.
Con esta información, puede copiar la identificación del objeto, en este caso era fPh-fe-F5F , y buscar en el espacio de trabajo la aparición de esta cadena. La cadena se encontrará en el archivo Main.storyboard. Haga doble clic en el resultado de la búsqueda y se abrirá Main.storyboard con la escena seleccionada. Una vez que conozca una escena problemática, puede solucionar fácilmente el problema configurando la ID del guión gráfico o configurando "Es el controlador de vista inicial"
fuente
Puede simplemente establecer un identificador. En el inspector de atributos en el panel derecho, encontrará un campo llamado "Identificador". Simplemente coloque cualquier cuerda allí, esto debería funcionar
Puede hacer clic en el controlador de navegación y, debajo del inspector de atributos, haga clic en el botón "es el controlador de vista inicial", y esto también debería funcionar.
fuente
Me enfrenté al mismo problema y resolví poner en el ID del guión gráfico cualquier identificador para todos los viewController y NavigationController también; el error se eliminará de inmediato
¡¡¡disfrutar!!!
fuente
Quizás este XQuery te ayude a encontrar esas escenas desagradables
Si tiene xqilla instalado, guardaría la consulta en un archivo y lo usaría como
fuente
No sé si esto no se ha mencionado todavía o no, pero otra razón por la que podría recibir esta advertencia es si tiene una transición que va en la dirección incorrecta. Por ejemplo, en mi proyecto recibí esta advertencia, pero todos mis controladores estaban conectados. Sin embargo, uno de ellos tuvo una transición que básicamente intentaba presentar al padre del niño en lugar de que el padre presentara al niño. Esto provocó la misma advertencia.
fuente
Recibí esta advertencia cuando tengo un UIViewController en Storyboard en el que no se establece nada. Evité esta advertencia estableciendo Storyboard ID en ella.
fuente
Tuve el mismo problema, pero me di cuenta de que estaba usando la vista de contenedor y, en lugar de eliminar el controlador de vista predeterminado, eliminé su segue, por lo que el controlador de vista permaneció en el guión gráfico y también la advertencia. Entonces, este es uno de los casos en los que aparece una advertencia si el controlador de vista predeterminado de la vista del contenedor no se elimina correctamente cuando no lo necesita.
fuente
Intenté todo lo descrito anteriormente sin éxito. Tenía todo conectado correctamente en IB, con exactamente uno
UIViewController
designado como controlador de vista raíz. No tenía identificadores, pero los agregué a todos mis controladores.La única forma en que podía hacer que desapareciera la advertencia era haciendo todo lo anterior (incluido el reinicio de la computadora y una compilación limpia) y luego cambiando a una rama libre de errores de mi proyecto en git y viceversa.
No estoy seguro de qué acción lo solucionó, o qué combinación de acciones, pero no fue la construcción limpia por sí sola. Esto podría ser un subproducto de Main.storyboard que siempre cambia simplemente al abrirse, lo que significa que tengo que hacerlo
git commit -m "Stupid storyboard"
más a menudo de lo que deseo.fuente
Esto es lo que funcionó para mí:
fuente
Recibí el mismo error: para mí, el error fue que no inicié un controlador de vista en mi storyboard.
Arreglar eso eliminó esa advertencia.
fuente
Simplemente dar a todos los MVC una identificación de guión gráfico funcionó para mí.
fuente