ios - unknown - Xcode 6 Bug: Classe desconhecida no arquivo do Interface Builder




unknown class viewcontroller in interface builder file. (20)

Às vezes, o controlador que você está fornecendo perde sua associação de destino do aplicativo atual. Nesse caso, pressionar enter no campo "Module" não fará nada. Vá para o controlador e certifique-se de que ele tenha associação de destino definida para o aplicativo atual.

Eu fiz o upgrade para o Xcode 6 beta 4 e agora meu App falha continuamente com a mensagem

Classe desconhecida X no arquivo do Interface Builder.

Ele falha porque supostamente o Xcode não consegue encontrar minhas classes personalizadas que eu vinculei no Storyboard, mas mostra que elas estão vinculadas corretamente na interface do Xcode.

Tenho certeza de que tudo está ligado corretamente. Minha única outra opção pode ser excluir todo o arquivo do storyboard e começar do zero, porque ele pode estar corrompido de alguma forma.

Edit: Eu também gostaria de acrescentar que eu tentei limpeza, redefinindo simulador, brincando com as fases de compilação etc. Nada disso funciona.


A solução foi diferente para mim. Você precisa adicionar o .m da classe às fontes compiladas da fase de compilação do destino.

Espero que isto ajude!


Enfrentei esse problema no Xcode 6.1 quando removi Main.storyboard , o arquivo LaunchScreen.xib e as classes ViewController padrão do meu projeto.

Eu Info.plist entradas Launch Screen File e Main Interface do Info.plist


Essas etapas funcionam para mim.

1) Limpar dados derivados.
2) Remova os arquivos .h e .m
3) Crie os arquivos .h e .m novamente


Eu enfrentei esse problema no Xcode 8 , para resolvê-lo eu tive que modificar o storyboard no editor de texto.

Em geral, procure seu controle e remova customModule e customModuleProvider da entidade de controle.

Fez um truque para mim.


Eu enfrentei o problema quando eu transferi o storyboard do projeto Swift para o projeto Objective-c, percebendo a resposta de vvkuznetsov , descobriu-se que os dois projetos usavam o mesmo identificador. Eu "Produto -> Limpar" e toque na tecla Enter no campo de texto Module e Class. a questão foi embora.


Eu pesquisei em todos os lugares por isso. Nenhuma das respostas funciona para mim até que eu encontrei um cara que me pediu para mover a pasta do meu projeto para a área de trabalho. Apenas funcionou automaticamente. Aparentemente, se você tem que projetar pasta para o fundo em muitas pastas, XCODE realmente quebra.


Eu resolvi esse problema digitando o nome do módulo (infelizmente, a lista suspensa não mostrará nada ...) na classe personalizada do inspetor de identidade de todos os controladores e visões do View.

Você também pode precisar indicar o provedor de destino. Para atingir esse objetivo, você pode abrir o storyboard no modo código fonte e adicionar o atributo "customModuleProvider" nos colchetes angulares ViewController e View.


Eu resolvi isso abrindo meu arquivo de storyboard como código-fonte e usando o comando -F para procurar minha classe desconhecida e excluir a classe personalizada associada a ela.


Eu tive esse problema depois de renomear uma classe rápida. Resolvido usando a diretiva @objc:

@objc(ForumTopicListViewController) class ForumTopicListViewController

Eu tive o mesmo problema com o Xcode Versão 6.1 (6A1052d). Eu acho que o problema aparece se você renomeou seu App / Xcode Project.

Minha solução foi adicionar o nome do módulo no construtor de interface manualmente.


Eu tive o mesmo problema.

No meu caso, o Xcode não estava adicionando minha classe personalizada a: Target> Build Phase> Compile Sources.

Então, eu recomendo que você verifique se o seu CustomClass.m está lá.

Espero que isso ajude você.


Isso pode acontecer em qualquer Xcode acima de 6.0. Aconteceu comigo depois de renomear algumas classes ViewController no projeto Swift (mas eu acho que isso vai acontecer com o Obj-C também). Você só precisa abrir o construtor de interface, vá para o Identity Inspector do ViewController que teve sua classe renomeada, selecione class e pressione Enter. Isso reatribuirá a classe renomeada ao ViewController selecionado e também redefinirá o valor do módulo que é perdido após renomear a classe.

Atualização para o Xcode 8.1 (provavelmente 8.0 também):

Xcode 8.1 apenas trava. Simples e irritantemente apenas falha e não imprime nada. Eu estava perseguindo aquele acidente fantasma por uma hora só para descobrir que era essa mesma coisa - classe não designada no IB. Se você está tendo algumas falhas fantasmas, verifique o IB para classes não atribuídas primeiro.


Minha resposta: definir módulo personalizado igual ao nome do POD personalizado (no meu exemplo - nome da classe personalizada) como na captura de tela anexada

Essa solução é para um caso específico : para classes de visualizações personalizadas da estrutura Pod (ou Carthage ).

Infraestrutura: XCode8, Swift3


Minha solução foi remover @objc da definição de classe personalizada.


No meu caso, a classe referenciada no Storyboard / xib não tinha o conjunto de membros alvo .

Para corrigir, dê aos arquivos .h e .m da mesma classe a mesma Associação de Destino que as outras classes.


O que @gfrs disse está correto, você precisa definir o módulo. No entanto, certa vez, encontrei um problema em que minha turma não estava listada na lista suspensa Class . Eventualmente eu removi o arquivo rápido, re-iniciei o Xcode e criei novamente o arquivo. Finalmente, a turma foi listada e poderia ser usada no Storyboard.

Também dê uma olhada nesta resposta , que parece resolver o problema 'real' que encontrei.


O que só funcionou para mim é realmente adicionar o nome do módulo ao arquivo xib ...

Sooo, os arquivos xib são assim:

mymodule.MyViewController.xib (Module being the name of the proyect, usually)

Solução HORRÍVEL, na minha opinião, mas isso é supostamente como a Apple quer que façamos isso agora.

Esta questão mostra 3 possíveis trabalhos em torno do beta 4 ... aparentemente, a Apple não tem sido muito útil nesta situação, de acordo com alguns, porque eles chamam de "Trabalhar como pretendido".


Selecione seu arquivo de classe desconhecido, aba de inspetor de arquivo aberto, verifique seu nome de alvo em Target Membership . Ai está.


Verifique se sua turma tem a inscrição certa.





uistoryboard