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
Carpetfizz
fuente
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í

Kalpit Gajera
fuente
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

Geekoder
fuente
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

Parth Tamane
fuente
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.

Shubham
fuente
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
Literalmente
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

ricardopereira
fuente
15

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

usuario1021430
fuente
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.

Kraftydevil
fuente
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!

Randika Vishman
fuente
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

Vicky
fuente
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


fuente
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>
nomnom
fuente
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 !!!
usuario1195202
fuente
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í

saumya ranjan Gangwar
fuente
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.

LentoMan
fuente
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

orilla del mar liu
fuente
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.

Mavin Martín
fuente
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í

Chris
fuente
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 ;-)

Sven Vietense
fuente
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í

Aqib Mumtaz
fuente
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.

Craig D
fuente
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()
Sagar Thukral
fuente
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í

Sk Borhan Uddin
fuente
-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 !!!

iSpeedyG
fuente
-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.

Akashascosset
fuente