Embora este tópico seja antigo, não vi uma resposta descrevendo o que funcionou para mim, então aqui vai ...
Eu tive esse erro e o exame visual do storyboard mostrou que todos os controladores de exibição pareciam estar conectados ao controlador de exibição raiz.
Tentei nomear todos os 17 controladores de visualização no storyboard (como na resposta de @bobnoble). Eu usei uma convenção de nomenclatura baseada no nome longo do controlador de visualização, por exemplo, "jvc" para "Controlador de visualização de jobs". Quando tentei construir, recebi uma mensagem de erro apontando para um dos controladores de visualização como tendo um nome duplicado. Rastreando as coisas, descobri que tinha uma duplicata real de um controlador de visualização empilhado exatamente em cima de seu gêmeo. Suspeito que tenha sido o dano cortado e colado de um experimento de interface do usuário que eu não desisti completamente.
De qualquer forma, excluir o gêmeo desconectado resolveu meu problema. Depois disso, removi todos os nomes de VC, pois eles não são referenciados no código.
Storyboard ID
Em seu storyboard, selecione cada um dos controladores de visualização (seta vermelha na imagem abaixo) e observe o campo ID do Storyboard (oval vermelho). Nenhum dos campos de ID do Storyboard deve ficar em branco. Quando você encontra um que é, esse é o culpado.
fonte
Storyboard ID
removeu o avisoUINavigationController
para váriosUIViewControllers
e tive que definir um identificador para todos eles, mesmo que nunca chame um deles por identificador. Muito chato, procurar um bug onde ninguém está!Acabei de ter esse erro exato com um Storyboard de cena única simples e tudo o que tive que fazer para consertá-lo foi marcar a caixa de seleção "É o controlador de visualização inicial" para o controlador de visualização 1 no Storyboard. Suspeito que o Xcode costumava marcar essa caixa para você por padrão nesta situação, mas não faz mais.
Marque a caixa para exatamente um dos controladores de visualização em seu storyboard e você deve estar bem.
fonte
Receio que você terá que passar por todos os 30 deles e verificar se eles têm um ID de Storyboard ou uma segue para aquele controlador de visualização. Um dos dois é obrigatório, ambos também são uma opção.
fonte
Esse problema pode acontecer em um dos seguintes cenários:
Caso I: se nenhuma cena do storyboard estiver marcada como "isInitialViewController" .
Correção: identifique o controlador de visualização raiz e marque-o como "isInitialViewController" em seu SB. Nesse caso, a id do storyboard não é obrigatória.
Caso II
Pode haver situações em que você não precisa ter um initialViewController em um storyboard. Por exemplo: ao usar vários storyboards.
Correção: Nesses casos, certifique-se de que o "id do storyboard" seja fornecido corretamente e consulte a primeira cena a ser usada no storyboard usando esse id. Por exemplo:
Nesse caso, a "id do storyboard" é obrigatória.
Caso III
Você tem seu initialViewController conectado. Mas você ainda recebe este aviso. Isso ocorre porque algumas das cenas no storyboard podem não estar conectadas com uma "segue" e também não têm uma "id do storyboard" . Digitalize seu storyboard, veja se uma "segue" é necessária. Conecte a segue se estiver faltando. Se uma segue não for necessária, certifique-se de fornecer um "id do storyboard" pois é a única maneira de referir a cena de seu código, conforme mostrado no código de exemplo acima.
Espero que isto ajude
fonte
Você não precisa definir
Storyboard ID
para todas as cenas ouUINavigationController
Bem, eu tenho cerca de 50-60 cenas e acabei de receber esses avisos de modo que percebi que apenas o controlador (Scene) ou NavigationController que não está conectado com segue precisa ser definido
Storyboard ID
.Você pode ver que na imagem acima
UINavigationController
não está conectado com segue, foi o culpado desse aviso.Basta fornecer a ele um Storyboard ID para remover este aviso.
fonte
Eu tive o mesmo problema. Tenho muitas visualizações no meu storyboard com um controlador de barra de navegação e guia. Para mim foi apenas um aviso para avisar que algumas das visualizações não estão conectadas. Certifique-se de que todas as suas visualizações estão conectadas de alguma forma ao controlador de visualização raiz . Eu estava começando este projeto do zero para eliminar esse aviso e percebi o mesmo aviso quando uma view não estava conectada.
fonte
Maneira mais simples de encontrar a cena ofensiva:
Vá para o navegador de problemas (no painel esquerdo, próximo ao botão de pesquisa) e clique duas vezes no erro. Uma janela aparecerá contendo a cena ofensiva centralizada no meio da janela.
(Isso geralmente é verdade - clicar duas vezes em qualquer erro geralmente resultará em um pop-up contendo o erro centralizado - um pequeno truque interessante!)
Nota lateral: Às vezes, o XCode fornecerá incorretamente esse erro para uma cena que é o controlador de visualização raiz de um controlador de navegação (que é o controlador de visualização inicial). A correção simples é dar a este controlador de visualização raiz um Storyboard ID, compilando (o erro deve desaparecer) e, em seguida, removendo o storyboardID (sem mais erros).
fonte
A maneira mais fácil de ver qual controlador, ou cena, está causando esse problema é:
.storyboard
no Navegador do projeto e selecioneOpen As > Source Code
. Isso abrirá o XML subjacente do Storyboard.Agora, no meu caso, o aviso foi particularmente irritante porque a "cena ofensiva" tinha um identificador e uma segue! Consegui solucionar o problema excluindo a cena e, em seguida, desfazendo a exclusão. Não é elegante, mas funcionou. Salvei meu Storyboard antes de fazer isso. Em retrospecto, eu deveria ter feito uma cópia e feito
diff
o antes e depois.fonte
Source Code
view não mostra o erro. Portanto, a milhagem pode variar.Para mim, não foi por causa de a
Storyboard ID
ou aSegue
. Recebi este aviso porque não configurei oView Controller's Custom Class
.Selecione
View Controller
no eStoryboard
, em seguidaUtilities Pane
, selecione oIdentity Inspector
ícone. AbaixoCustom Class
, veja qual valor está dentro doClass
campo.Se apenas diz
UIViewController
, então você precisa digitar o nome da classe. Este será o nome de seus arquivos.h
e.m
que constituem suaUIViewController
subclasse personalizada .fonte
Eu vim para esta questão hoje. Estou usando o Xcode 6.3 e a resposta à pergunta do OP é bastante simples agora:
Selecione o View Controller que deseja que seja o primeiro, mostre o Attributes Inspector e, na seção View Controller, certifique-se de
É o controlador de visão inicial
está checado. Voilà!
fonte
Com o Xcode 7, isso pode ser tratado facilmente. Não há necessidade de passar manualmente por todas as cenas para encontrar uma problemática. Primeiro vá para o navegador de relatórios , onde você pode obter mais informações detalhadas sobre os problemas conhecidos. A descrição do problema pode ser assim:
Base.lproj / Main.storyboard: fPh-fe-F5F : aviso: A cena está inacessível devido à falta de pontos de entrada e não tem um identificador para acesso em tempo de execução via -instantiateViewControllerWithIdentifier :.
Com esta informação, você pode copiar o id do objeto, neste caso era fPh-fe-F5F , e pesquisar no espaço de trabalho a ocorrência desta string. A string será encontrada no arquivo Main.storyboard. Clique duas vezes no resultado da pesquisa e será aberto Main.storyboard com a cena selecionada. Depois de conhecer uma cena problemática, você pode corrigir facilmente o problema, definindo o ID do storyboard ou definindo "É o controlador de visualização inicial"
fonte
Você pode apenas definir um identificador. No inspetor de atributos no painel direito, você encontrará um campo chamado "Identificador". Basta colocar qualquer string lá, isso deve funcionar
Você pode clicar no controlador de navegação e no inspetor de atributos clicar no botão "é o controlador de visualização inicial", e isso deve funcionar também.
fonte
Eu enfrentei o mesmo problema e resolvi colocar no storyboard ID qualquer identificador para todos os viewController e NavigationController também; o erro será removido imediatamente
desfrutar!!!
fonte
Talvez esta XQuery ajude você a encontrar essas cenas desagradáveis
Se você tiver o xqilla instalado, você deve salvar a consulta em um arquivo e usá-lo como
fonte
Não sei se isso ainda não foi mencionado ou não, mas outro motivo pelo qual você pode receber este aviso é se você tiver uma sequência indo na direção errada. Por exemplo, em meu projeto eu estava recebendo este aviso, mas todos os meus controladores estavam de fato conectados. No entanto, um deles teve uma sequência que basicamente estava tentando apresentar o pai da criança em vez de o pai apresentar a criança. Isso causou o mesmo aviso.
fonte
Recebi este aviso quando estou tendo um UIViewController no Storyboard para o qual nada está definido. Evitei esse aviso configurando o Storyboard ID para ele.
fonte
Tive o mesmo problema, mas percebi que estava usando o modo de exibição de contêiner e, em vez de excluir o controlador de exibição padrão, excluí seu controlador segue. Portanto, o controlador de exibição permaneceu no storyboard, assim como o aviso. Portanto, este é um dos casos em que o aviso aparece se o controlador de visualização padrão da visualização do contêiner não for excluído corretamente quando você não precisar dele.
fonte
Tentei tudo descrito acima sem sucesso. Eu tinha tudo conectado corretamente no IB, com exatamente um
UIViewController
designado como controlador de visualização raiz. Eu não tinha identificadores, mas os adicionei a todos os meus controladores.A única maneira de fazer o aviso desaparecer era fazendo tudo acima (incluindo reinicializar o computador e uma compilação limpa), em seguida, alternar para um branch sem erros do meu projeto no git e vice-versa.
Não tenho certeza de qual ação o corrigiu ou qual combinação de ações, mas não era a compilação limpa por si só. Isso pode ser um subproduto de Main.storyboard, sempre mudando ao simplesmente ser aberto, o que significa que preciso fazer isso com
git commit -m "Stupid storyboard"
mais freqüência do que gostaria.fonte
Aqui está o que funcionou para mim:
fonte
Recebi o mesmo erro: para mim, o erro foi não iniciei um controlador de visualização no meu storyboard.
Corrigir isso removeu aquele aviso.
fonte
Simplesmente dar a todos os MVCs uma id de storyboard funcionou para mim.
fonte