No se pudo encontrar un guión gráfico llamado 'Principal' en el paquete


86

Recibo un error extraño: 'Could not find a storyboard named 'Main' in bundle NSBundle'cuando intento ejecutar mi aplicación en un dispositivo iOS real.

Tengo el archivo en mi directorio y funciona bien en el simulador. Sin embargo, en la Copy Bundle Resourcessección, el archivo Main.storyboardes rojo.

Intenté eliminarlo y agregarlo nuevamente, reiniciar Xcode, limpiar la compilación, etc. sin éxito. Esta es la advertencia que recibo en Xcode:

/Users/ajay/Documents/avx/avx/Base.lproj/Main.storyboard: Internationalization of /Users/ajay/Documents/avx/avx/Base.lproj/Main.storyboard is not available when compiling for targets before iOS 6.0

Describí cómo resolver el problema dentro de esta publicación: stackoverflow.com/a/21098195/1141395
Alex Cio

Este problema ocurre principalmente debido a la instalación de una aplicación corrupta. La solución es limpiar y construir el proyecto. También elimine la aplicación existente del dispositivo / simulador y vuelva a ejecutarla.
Krishnabhadra

Usuarios de Xcode 11 , desplácese hacia abajo hasta stackoverflow.com/a/58452686 , posiblemente sea exactamente su caso.
Cemen

Respuestas:


92

abra el info.plist de su proyecto y elimine la fila seleccionada que se muestra en la captura de pantallaingrese la descripción de la imagen aquí

Si obtiene una pantalla negra, asegúrese de que su nuevo guión gráfico inicial esté seleccionado como su interfaz principal ingrese la descripción de la imagen aquí


24
Gracias, pero esto acaba de hacer que mi aplicación se inicie con una pantalla negra. Sin embargo, no hay accidentes.
Carpetfizz

Asegúrese de tener estas dos líneas en su - (BOOL) aplicación: (UIApplication *) application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions ...: (1) self.window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] límites]]; (2) self.window.backgroundColor = [UIColor whiteColor];
Joel Hansen

@ Carpetfizz Agregar '[self.window makeKeyAndVisible];' a su AppDelegate.
Alserda

4
"lanzamiento de la aplicación con una pantalla negra", ¿nadie tiene idea de esto?
Umit Kaya

@Umitk establece el fondo en blanco (view.backgroundColor = .white) o cualquier otro color que te guste
Stephane Paquet

59

Puede verificar la membresía objetivo del guión gráfico. Puede ser allí donde está el problema:

Debería verse así:

Membresía objetivo


Tuve el mismo problema y al principio pensé que no estaba copiando los recursos correctos en el objetivo, pero arreglar la membresía del objetivo solucionó el problema.
pyj

2
Gracias, funcionó! Hice Limpiar, Renombrar Archivo, Actualizar Plist sin alegría. Siempre es lo más obvio lo que te atrapa.
Jim Geldermann

Hola, tengo el mismo problema, pero la ventana de membresía de destino no se muestra, Xcode 7. Por favor, ayude
DrPatience

Por alguna razón, mi objetivo no fue seleccionado .. Gracias por esta respuesta .. ¡¡Resuelto !!
Ümañg ßürmån

58

Para cualquiera que enfrente este problema en Xcode 11, así es como puede solucionarlo si se enfrenta a este problema al realizar la configuración del proyecto sin guión gráfico.

(Añadiendo algunas partes que ricardopereira se perdió)

1) Primero, elimine el archivo Main.storyboard

2) A continuación, vaya a PROJECT_NAME -> GENERAL

En el menú desplegable de la interfaz principal, elimine el texto Main

eliminar la referencia a main de la configuración general

3) Ahora vaya a info.plist y elimine el nombre del guión gráfico

eliminando la referencia al guión gráfico de info.plist

4) Finalmente, modifique el código de la escena (_: willConnectTo: options) en el archivo SceneDelegate.swift (¡Sí! Ya no está en App Delegate).

var window: UIWindow?


    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
        // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
        // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
        guard let windowScene = (scene as? UIWindowScene) else { return }
        window = UIWindow(frame: windowScene.coordinateSpace.bounds)
        window?.windowScene = windowScene
        window?.rootViewController = ViewController()
        window?.makeKeyAndVisible()
    }

En su lugar, también puede consultar este video: https://www.youtube.com/watch?v=Htn4h51BQsk


3
Su respuesta es casi correcta, solo que hay un pequeño cambio en la función de la escena: guard let _ = (scene as? UIWindowScene) else { return } let viewController = ViewController() if let windowScene = scene as? UIWindowScene { self.window = UIWindow(windowScene: windowScene) self.window?.rootViewController = viewController self.window?.makeKeyAndVisible() }
Reza Dehnavi

3
Para agregar algo de énfasis, la entrada info.plist no es solo la entrada principal habitual del guión gráfico, sino TAMBIÉN la del manifiesto de la escena de la aplicación que es nueva para iOS 13. Tuve que leer dos veces antes de darme cuenta.
jboulter11

¡Esta es la forma correcta de hacer las cosas ahora! ^^ Apple siguió cambiando las cosas.
Yuchen Zhong

36

Una actualización para aplicaciones creadas para iOS 13.0 y superior. (Xcode 11)

Si recibe el error "No se pudo encontrar un guión gráfico llamado 'Principal' en el paquete incluso después de cambiar el" Nombre base del archivo del guión gráfico principal "en info.plist y la" Interfaz principal "en Implementación en Target.

Entonces tienes que cambiar otra entrada en el archivo info.plist.

  1. Abra el archivo info.plist.
  2. Expanda "Manifiesto de la escena de la aplicación".
  3. Expanda "Configuración de escena".
  4. Expanda el elemento 0 en "Rol de sesiones de aplicación" y luego cambie el nombre del guión gráfico allí.

ingrese la descripción de la imagen aquí

Y tu aplicación comenzará a funcionar.


1
Esta es absolutamente la respuesta correcta. Aparentemente, ya no es suficiente configurar el guión gráfico principal desde el menú desplegable General> Interfaz principal.
NRitH

1
Gracias por esto. Eliminar la clave "Application Scene Manifest" (junto con todas sus subclaves) resolvió el problema para mí.
Greg Brown


1
Me salvaste la vida :)
Yusuf Kamil AK

17

En un proyecto que se usa UISceneen iOS 13 y Xcode 11, debe eliminar la UISceneStoryboardFileclave de .plist.

Xcode 11:

xcode11-uiscene

Cambiar directamente desde el archivo:

uiscene-plist


15

Eliminé la aplicación de mi teléfono, hice Producto -> Limpiar y la cargué nuevamente. Eso es todo lo que necesité para mí.


para cada ejecución, si se elimina, solo me está ejecutando ... por favor ayúdeme en xcode 10.1
Aruna M

12

Recibí este error, sin embargo, mi intención era eliminar los guiones gráficos por completo.

Eliminar la clave 'Nombre base del archivo del Storyboard principal' de mi plist solucionó el error.


10

No se pudo encontrar un guión gráfico llamado 'Principal' en el paquete

Razón en la que pude pensar:

Por lo que mi conocimiento de iOS me llegó a la conclusión, esto solo sucedió porque XCode no pudo encontrar la referencia al archivo Main.storyboard dentro del directorio de mi proyecto para copiarlo en la aplicación.

Resolución:

  1. Seleccioné el archivo Main.storyboard e intenté eliminarlo, y en el cuadro de diálogo que aparece de la siguiente manera: ingrese la descripción de la imagen aquí

  2. Haga clic en el botón "Eliminar referencia".

  3. Luego, desde el lugar real donde pude encontrar el archivo Main.storyboard dentro del directorio del proyecto, lo arrastré y soltó en el XCode, y nuevamente desde el cuadro de diálogo que aparece de la siguiente manera: ingrese la descripción de la imagen aquí

  4. Elegí "Crear referencias de carpeta" (porque eso es algo que tenía la intención de hacer porque cambié la estructura de archivos y carpetas de mi proyecto). Pero la mayoría de las veces, elegir "Crear grupos" también puede funcionar. Y haga clic en el botón "Finalizar". Mis archivos de Storyboard ya estaban dentro como se muestra en la captura de pantalla ya dentro de un Base.lprojdirectorio de la siguiente manera:

    ingrese la descripción de la imagen aquí

    Nota: Una cosa importante para recordar aquí en este paso es que no olvide marcarlo en la casilla de verificación "Agregar a objetivos" de su aplicación.

  5. Limpie el Producto, vuelva a construirlo y, si tiene éxito, la mayoría de las veces intente ejecutarlo correctamente.

¡Espero que esto pueda ser útil para alguien más! ¡Probé esto en XCode 7.3.1 y en iOS Sim 9.3 y iPhone 6S!


Por favor, ayude a esto. También estoy enfrentando este problema después de instalar os10.14.1 y xc0de 10.1..Estoy tratando de resolver desde 3 días, pero aún así ..mi proyecto funciona bien en xcode9.1 ..
Aruna M

@ArunaM ¿Intentaste los pasos anteriores que he dado en la respuesta? ¿Cuál fue el estado después de hacer esto?
Randika Vishman

1
¡Esta fue la solución cuando eliminé un ViewController del proyecto que causó el mismo error!
Slarty Bartfast

8

Sigue los pasos:

1) Primero haga clic en su storyboard

2) Luego haga clic en Inspector de archivos

3) Luego seleccione "Membresía objetivo"

Captura de pantalla


6

El simulador no distingue entre mayúsculas y minúsculas, pero el dispositivo sí. Si su guión gráfico se llama MainStoryboard, no MainStoryBoard, esto causará su problema. y también * no use las extensiones escriba solo el nombre del storyboard

main.storyboard -> solo main es el nombre del guión gráfico


6

Swift 5.1 y xCode 11.2

En mi caso, se me olvidó cambiar Storyboard NameenInfo.plist

ingrese la descripción de la imagen aquí

Info.plist código fuente

    <dict>
        <key>UIApplicationSupportsMultipleScenes</key>
        <false/>
        <key>UISceneConfigurations</key>
        <dict>
            <key>UIWindowSceneSessionRoleApplication</key>
            <array>
                <dict>
                    <key>UISceneConfigurationName</key>
                    <string>Default Configuration</string>
                    <key>UISceneDelegateClassName</key>
                    <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
                    <key>UISceneStoryboardFile</key>
                    <string>AccountViewController</string>
                </dict>
            </array>
        </dict>
    </dict>

4
  1. Abre tu archivo de guión gráfico
  2. Luego haga clic en Inspector de archivos
  3. Luego seleccione "Membresía objetivo" y verifique su proyecto
  4. Haga lo mismo para el archivo ViewController !!! Parte importante si usa ViewController.swift o ViewController.m con su guión gráfico !!!

3

Este error se produce mientras recupera su archivo main.storyboard de la papelera después de eliminar su archivo. También enfrenté el mismo problema ayer.

Debe establecer la ruta de ubicación de main.storyboard como Relativa al grupo en el inspector de archivos de main.storyboard. Después de eso, en el mismo atributo, debe asegurar la marca de verificación en el objetivo de su aplicación (como puede ver en la imagen adjunta).

ingrese la descripción de la imagen aquí


2

Dos soluciones diferentes que funcionaron para mí después de actualizar a Xcode 10.1:

  • En Archivo-> Configuración del área de trabajo (o proyecto) . Cambie a Legacy Build System .

  • En sus Fases de compilación de destino , elimine la carpeta Base.lproj de Copiar recursos del paquete (si está en la lista) y asegúrese de que cada uno de sus guiones gráficos se enumeren y se copien por separado.

Después de aplicar cualquiera de las correcciones anteriores, asegúrese de limpiar la carpeta de compilación desde el menú Producto una vez; de lo contrario, es posible que las correcciones no funcionen correctamente.


1

Eliminar la fila en plist también provocó una pantalla negra en mi aplicación. Y lo arreglé habilitando la membresía de destino del guión gráfico


1

Como ha dicho Kalpit Gajera, "abre el info.plist de tu proyecto y elimina la fila seleccionada que se muestra en la captura de pantalla". Simplemente elimine el 'Nombre base del archivo del guión gráfico principal' del Info.plist. Después de eliminarlo, limpiarlo y ejecutarlo, el programa ya no fallará, pero mostrará una pantalla negra. Abra Info.plist nuevamente y agregue manualmente la fila nuevamente. Problema resuelto.


0

elija main.storyboard, cambie la vista como iOS 6.1 y anterior, luego xcode le dirá lo que debe hacer.

ingrese la descripción de la imagen aquí


0

Mi solucion es:

Cuando agregué una conexión de secuencia entre dos vistas y en la configuración de Projekt, el objetivo de implementación es inferior a 8.0, obtengo este error.

ok, fácil comprensión cuando desarrolla para IOS 6.0 (por ejemplo) no puede usar Seque, porque Seque necesita IOS 8.0 o posterior ...... ;-)

entonces, configuré el objetivo de implementación en 8.0 y el error desapareció. otro tiempo, cancelo todas las conexiones de Segue y las manejo con IBAction, vieja escuela ;-)


0

Estaba moviendo el archivo Main.Storyboard a la subcarpeta "azul" que estaba causando problemas, tuve que agregar subcarpetas siguiendo estas instrucciones Xcode 6.3 New File Issue

luego mover el archivo Main.Storyboard a la subcarpeta amarilla funcionó para mí


0

Mi problema se resolvió eliminando el .xmlsufijo de Main.storyboard.xml file.

Aparentemente, el sufijo cambió de la versión desde la que importé el proyecto.

Por lo tanto, cambie el nombre del archivo (elimine el .xmlsufijo) y reinicie, luego Project-> clean....solucionó el problema.


0

Si aún tiene la pantalla en negro, intente agregar el siguiente código en su delegado de escena

willConnectTo

    guard let windowScene = (scene as? UIWindowScene) else { return }
    window = UIWindow(frame: windowScene.coordinateSpace.bounds)
    window?.windowScene = windowScene
    let navController = UINavigationController()
    let mainstoryboard:UIStoryboard = UIStoryboard(name: "Your storyboard name", bundle: nil)
    let initialController = mainstoryboard.instantiateViewController(withIdentifier: "your initial controller Identifier") as! initialController
    navController.addChild(initialController)
    window?.rootViewController = navController
    window?.makeKeyAndVisible()

0

Si su guión gráfico se agrega en el proyecto (lo que determinará en la sección Inspector de archivos del proyecto del área de utilidad xcode)La casilla de verificación está marcada en el área de membresía de destino

Solo tiene que eliminarlo Main.Storyboardde "Copiar recurso de paquete" (en Build Phase) y agregarlo nuevamente en "Copiar recurso de paquete". Esto funcionó para mí.ingrese la descripción de la imagen aquí


-1

Ok, esto ha sido un proceso. Probar tantas cosas diferentes. Ejecutando xcode 6.4 en OS 10.11. Tener el problema "principal" no se puede encontrar. Lo que finalmente hice fue mover main.storyboard también en mi escritorio desde Finder. Hice una limpieza, compilé y salí de xcode. reiniciado xcode ahora tiene un main.storyboard rojo. Lo ejecuto virtualmente hace lo mismo. luego hago clic derecho en la carpeta del proyecto y elijo la opción agregar archivos a ... Navegar hasta donde está y abrirlo. luego, cuando esté a la derecha, debería ser el inspector de identidades. haga clic en la carpeta pequeña debajo de la ubicación. busque esa carpeta nuevamente y seleccione elegir. Luego corrí y funcionó. Amén !!!


-1

Seleccione el controlador de vista que desea que aparezca primero en la lista del lado izquierdo del guión gráfico, luego, en el inspector de atributos, asegúrese de que su título sea "Principal" y la casilla de verificación "Es el controlador de vista inicial" esté seleccionada.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.