Não foi possível encontrar um storyboard chamado 'Principal' no pacote

86

Estou recebendo um erro estranho: 'Could not find a storyboard named 'Main' in bundle NSBundle'ao tentar executar meu aplicativo em um dispositivo iOS real.

Tenho o arquivo no meu diretório e funciona bem no simulador. No entanto, na Copy Bundle Resourcesseção, o arquivo Main.storyboardestá vermelho.

Tentei removê-lo e adicioná-lo novamente, reiniciando o Xcode, limpando a compilação, etc. sem sucesso. Este é o aviso que recebo no 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
fonte
Descrevi como resolver o problema neste post: stackoverflow.com/a/21098195/1141395
Alex Cio
Esse problema ocorre principalmente por causa da instalação corrompida do aplicativo. A solução é limpar e construir o projeto. Remova também o aplicativo existente do dispositivo / simulador e execute novamente.
Krishnabhadra
Usuários do Xcode 11 , role para baixo até stackoverflow.com/a/58452686 , possivelmente é exatamente o seu caso.
Cemen

Respostas:

92

abra o info.plist do seu projeto e remova a linha selecionada exibida na captura de telainsira a descrição da imagem aqui

Se você receber uma tela preta, certifique-se de que seu novo storyboard inicial seja selecionado como sua interface principal insira a descrição da imagem aqui

Kalpit Gajera
fonte
24
Obrigado, mas isso fez meu aplicativo iniciar com uma tela preta. No entanto, não há travamentos.
Carpetfizz
Certifique-se de ter essas duas linhas em seu - (BOOL) aplicativo: (UIApplication *) aplicativo didFinishLaunchingWithOptions: (NSDictionary *) launchOptions ...: (1) self.window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] limites]]; (2) self.window.backgroundColor = [UIColor whiteColor];
Joel Hansen
@Carpetfizz Adicionar '[self.window makeKeyAndVisible];' ao seu AppDelegate.
Alserda,
4
"lançamento de aplicativo com tela preta", ninguém tem ideia disso?
Umit Kaya
@Umitk definiu o plano de fundo para branco (view.backgroundColor = .white) ou qualquer outra cor que você quiser
Stephane Paquet
59

Você pode verificar a associação de destino do storyboard. Pode ser aí que está o problema:

Deve ser parecido com isto:

Associação Alvo

Geekoder
fonte
Tive o mesmo problema e, a princípio, pensei que não estava copiando os recursos certos para o destino, mas corrigir a associação de destino resolveu o problema.
pyj
2
Obrigado, funcionou! Limpei, renomeei arquivo e atualizei Plist sem nenhuma alegria. É sempre o mais óbvio que te pega.
Jim Geldermann
Olá, estou tendo o mesmo problema, mas a janela de associação de destino não está sendo exibida, Xcode 7. Por favor, ajude
DrPatience
Por algum motivo, meu destino não foi selecionado .. Obrigado por esta resposta .. Resolvido !!
Ümañg ßürmån
58

Para qualquer pessoa que enfrente esse problema no Xcode 11, veja como corrigi-lo se você enfrentar esse problema ao fazer a configuração do projeto sem storyboard

(Somando algumas peças que ricardopereira faltou)

1) Primeiro, exclua o arquivo Main.storyboard

2) Em seguida, vá para PROJECT_NAME -> GERAL

No menu suspenso da interface principal, exclua o texto Principal

removendo a referência ao principal das configurações gerais

3) Agora vá para info.plist e exclua o nome do storyboard

removendo referência ao storyboard de info.plist

4) Por fim, modifique o código da cena (_: willConnectTo: options) no arquivo SceneDelegate.swift (Sim! Não está mais no 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()
    }

Você também pode consultar este vídeo: https://www.youtube.com/watch?v=Htn4h51BQsk

Parth Tamane
fonte
3
Sua resposta está quase correta, mas há uma pequena mudança na função de cena: 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 adicionar alguma ênfase, a entrada info.plist não é apenas a entrada do storyboard principal usual, mas TAMBÉM aquela no manifesto da cena do aplicativo que é novo para o iOS 13. Eu tive que ler duas vezes antes de perceber.
jboulter11
Esta é a maneira certa de fazer as coisas agora! ^^ A Apple continuou mudando as coisas.
Yuchen Zhong
36

Uma atualização para aplicativos criados para iOS 13.0 e superior. (Xcode 11)

Se você receber o erro "Não foi possível encontrar um storyboard chamado 'Principal' no pacote, mesmo após alterar o" Nome base do arquivo do storyboard principal "no info.plist e" Interface principal "em Implementação no destino.

Em seguida, você deve alterar outra entrada no arquivo info.plist.

  1. Abra o arquivo info.plist.
  2. Expanda "Manifesto da cena do aplicativo".
  3. Expanda "Configuração de cena".
  4. Expanda o item 0 em "Função de sessões do aplicativo" e altere o nome do storyboard lá.

insira a descrição da imagem aqui

E seu aplicativo começará a funcionar.

Shubham
fonte
1
Esta é a resposta absolutamente certa. Aparentemente, não é mais suficiente definir o storyboard principal na lista suspensa Geral> Interface principal.
NRitH
1
Obrigado por isso. Excluir a chave "Application Scene Manifest" (junto com todas as suas subchaves) resolveu o problema para mim.
Greg Brown,
1
Eu literalmente não sei o que aconteceu, mas isso funciona
Bawantha
1
Você salvou minha vida :)
Yusuf Kamil AK
17

Em um projeto que usa UISceneno iOS 13 e Xcode 11, você precisa remover a UISceneStoryboardFilechave do .plist.

Xcode 11:

xcode11-uiscene

Alterando diretamente do arquivo:

uiscene-plist

Ricardopereira
fonte
15

Excluí o aplicativo do meu telefone, selecionei Produto -> Limpar e o carreguei novamente. Isso é tudo que eu preciso.

user1021430
fonte
para cada execução se deleta, então apenas sua execução ... por favor me ajude no xcode 10.1
Aruna M
12

Recebi este erro, no entanto, era minha intenção remover completamente os storyboards.

Remover a chave 'nome da base do arquivo do storyboard principal' do meu plist corrigiu o erro.

kraftydevil
fonte
10

Não foi possível encontrar um storyboard chamado 'Principal' no pacote

Razão pela qual eu poderia pensar:

Pelo que meu conhecimento de iOS me concluiu, isso aconteceu porque o XCode não conseguiu encontrar a referência ao arquivo Main.storyboard dentro do diretório do meu projeto para copiá-lo para o aplicativo.

Resolução:

  1. Selecionado o arquivo Main.storyboard e tentei excluí-lo, e na caixa de diálogo que aparece da seguinte maneira: insira a descrição da imagem aqui

  2. Clique no botão "Remover Referência".

  3. Então, do lugar real onde eu poderia encontrar o arquivo Main.storyboard dentro do diretório do projeto, arrastado e solto no XCode, e novamente na caixa de diálogo que aparece da seguinte maneira: insira a descrição da imagem aqui

  4. Escolhi "Criar referências de pasta" (porque era isso que pretendia fazer porque alterei a estrutura de arquivos e pastas do meu projeto). Mas na maioria das vezes, escolher "Criar grupos" também pode funcionar. E clicou no botão "Concluir". Meus arquivos de storyboard já estavam dentro, conforme mostrado na captura de tela, já dentro de um Base.lprojdiretório da seguinte forma:

    insira a descrição da imagem aqui

    Nota: Uma coisa importante a lembrar aqui nesta etapa é, não se esqueça de marcar ON a caixa de seleção "Adicionar aos destinos" em seu aplicativo.

  5. Limpe o Produto, reconstrua-o e, se for bem-sucedido, na maioria das vezes, tente executá-lo com êxito.

Espero que isso possa ser útil para alguém por aí! Eu tentei isso no XCode 7.3.1 e no iOS Sim 9.3 e iPhone 6S!

Randika Vishman
fonte
Por favor, ajude-me também estou enfrentando esse problema depois de instalar o os10.14.1 e xc0de 10.1..estou tentando resolver a partir de 3 dias, mas ainda .. meu projeto funciona bem no xcode9.1 ..
Aruna M
@ArunaM Você tentou os passos acima que dei na resposta? Qual foi o status depois de fazer isso?
Randika Vishman
1
Esta foi a solução quando removi um ViewController do projeto que causou o mesmo erro!
Slarty Bartfast
8

Siga os passos:

1) Primeiro clique em seu storyboard

2) Em seguida, clique em Inspetor de arquivo

3) Em seguida, selecione "Associação-alvo"

Captura de tela

Vicky
fonte
6

O simulador não diferencia maiúsculas de minúsculas, mas o dispositivo sim. Se o seu storyboard se chamar MainStoryboard, não MainStoryBoard, isso causará o problema. e também * não use as extensões, escreva apenas o nome do storyboard

main.storyboard -> apenas principal é o nome do storyboard


fonte
6

Swift 5.1 e xCode 11.2

No meu caso, eu esqueci de mudar Storyboard NameemInfo.plist

insira a descrição da imagem aqui

Info.plist Código fonte

    <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
fonte
4
  1. Abra seu arquivo de storyboard
  2. Em seguida, clique em Inspetor de arquivo
  3. Em seguida, selecione "Target Membership" e verifique o seu projeto
  4. Faça o mesmo para o arquivo ViewController !!! parte importante se você usar ViewController.swift ou ViewController.m com seu storyboard !!!
user1195202
fonte
3

Este erro ocorre enquanto você recupera o arquivo main.storyboard da lixeira após excluí-lo. Eu também enfrentei o mesmo problema ontem.

Você deve definir o caminho de localização de main.storyboard como Relativo ao Grupo no inspetor de arquivos de main.storyboard. Depois disso, no mesmo atributo, você deve garantir a marca de seleção no destino do seu aplicativo (como você pode ver na imagem anexa).

insira a descrição da imagem aqui

Saumya Ranjan Gangwar
fonte
2

Duas soluções diferentes que funcionaram para mim após a atualização para o Xcode 10.1:

  • Em Arquivo-> Configurações do Espaço de Trabalho (ou Projeto) . Mude para o sistema de compilação legado .

  • Em suas fases de construção de destino , remova a pasta Base.lproj de Copy Bundle Resources (se listada) e certifique-se de que cada um de seus storyboards sejam listados e copiados separadamente.

Depois de aplicar qualquer uma das correções acima, certifique-se de limpar a pasta de compilação no menu Produto uma vez, caso contrário, as correções podem não funcionar corretamente.

LentoMan
fonte
1

Excluir linha no plist causou tela preta em meu aplicativo também. E eu corrigi isso ativando a associação de destino do storyboard

Litoral Liu
fonte
1

Como Kalpit Gajera disse, "abra o info.plist do seu projeto e remova a linha selecionada exibida na imagem". Você simplesmente remove 'Nome da base do arquivo de storyboard principal' do Info.plist. Depois de removê-lo, limpar e executar, o programa não falhará mais, mas mostrará uma tela preta. Abra Info.plist novamente e adicione manualmente a linha de volta. Problema resolvido.

Mavin Martin
fonte
0

escolha main.storyboard, mude a visualização para iOS 6.1 e anteriores, então o xcode dirá a você o que você precisa fazer.

insira a descrição da imagem aqui

Chris
fonte
0

Minha solução é:

Quando adicionei uma conexão Seque entre duas visualizações e na configuração do projeto, o destino de implantação é menor que 8,0, recebo este erro.

ok, fácil entendimento quando você desenvolve para IOS 6.0 (por exemplo) você não pode usar o Seque, porque o Seque precisa do IOS 8.0 ou posterior ...... ;-)

então, eu defino o Deployment Target para 8.0 e o erro desapareceu !!!! de outro modo, cancelo todas as conexões do Segue e manejo com IBAction, old school ;-)

Sven Vietense
fonte
0

Eu estava movendo o arquivo Main.Storyboard para a subpasta "azul" que estava causando problemas, eu tive que adicionar subpastas seguindo estas instruções Xcode 6.3 New File Issue

então mover o arquivo Main.Storyboard para a subpasta amarela funcionou para mim

Aqib Mumtaz
fonte
0

Meu problema foi resolvido removendo o .xmlsufixo do Main.storyboard.xml file.

Aparentemente, o sufixo mudou da versão da qual importei o projeto.

Portanto, renomear o arquivo (removendo o .xmlsufixo) e reiniciá-lo, Project-> clean....corrigiu o problema.

Craig D
fonte
0

Se ainda assim você tiver a tela preta, tente adicionar o código abaixo em seu delegado de cena

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
fonte
0

Se o seu storyboard for adicionado ao projeto (que você determinará na seção Project File Inspector da área do utilitário xcode)A caixa de seleção está marcada na área de associação de destino

Você apenas tem que remover Main.Storyboardde "Copiar recurso de pacote" (in Build Phase) e adicioná-lo novamente em "Copiar recurso de pacote". Isso funcionou para mim.insira a descrição da imagem aqui

Sk Borhan Uddin
fonte
-1

Ok, isso foi um processo. Tentando tantas coisas diferentes. Executando o xcode 6.4 no OS 10.11. Tendo o problema não é possível encontrar 'Principal'. O que eu finalmente fiz foi remover o main.storyboard da minha área de trabalho do Finder. Limpei, construí e fechei o xcode. reiniciou o xcode agora ele tem um main.storyboard vermelho. eu o executo virtualmente faz a mesma coisa. em seguida, clico com o botão direito na pasta do projeto e escolho a opção adicionar arquivos a ... Navegue até onde está e abro. então, quando estiver lá, à direita, deverá estar o inspetor de identidades. clique na pequena pasta em localização. navegue até essa pasta novamente e selecione escolher. Então eu corri e funcionou. Amém !!!

iSpeedyG
fonte
-1

Selecione o controlador de visualização que deseja exibir primeiro na lista do lado esquerdo do storyboard e, em seguida, no inspetor de atributos, certifique-se de que o título seja "Principal" e a caixa de seleção "É o controlador de visualização inicial" marcada.

Akashascosset
fonte