Não foi possível inserir uma nova conexão de tomada: não foi possível encontrar nenhuma informação para a classe denominada

281

Ocorreu um erro no Xcode dizendo que não havia informações sobre o controlador de exibição.

Não foi possível inserir uma nova conexão de tomada: não foi possível encontrar nenhuma informação para a classe denominada

Por que isso está acontecendo?

Captura de tela 1

Ege Kaan Gürkan
fonte
2
Eu acho que isso já foi perguntado antes: stackoverflow.com/questions/17735182/…
Tapani
Eu simplesmente saí do Xcode e o reabri. o compilador irá re-carregar todos os arquivos e pode detectar o arquivo que você está procurando
Jane frango
Verifique se você ainda não possui uma tomada desconectada no arquivo do controlador de exibição. Eu descobri que sim. Depois de excluí-lo, não tive mais problemas.
Kex
Para mim, nenhuma das soluções acima funcionou. Eu tive que excluir o controlador de exibição, que copiei e colei novamente no meu storyboard para reutilizá-lo. Em seguida, arrastei um novo controlador de exibição no storyboard e tudo ficou bem :). Espero que ajude alguém com o mesmo problema.
Arslan Saleem
Este é um erro no XCode e não sei por que eles não o corrigem. Você precisa fechar o XCode e reabri-lo. Quando você tenta novamente colocar as saídas, mas desta vez deixe um monte de ENTERS antes de fazê-lo. Você não precisa excluir nada ou perder tempo com outras opções ... Isso resolverá seus problemas.
Mavesonzini

Respostas:

692

Aqui estão algumas coisas que podem corrigir isso (em ordem crescente de dificuldade):

  • Limpe o projeto ( Produto> Limpar )
  • Cole manualmente em

    @IBOutlet weak var viewName: UIView!
    // or
    @IBAction func viewTapped(_ sender: Any) { }

    e controle arrastar para ele. (Altere o tipo conforme necessário.) Veja também isso .

  • Feche completamente o Xcode e reinicie o seu projeto.

  • Exclua a pasta Dados Derivados (Vá para Xcode> Preferências > Locais e clique na seta cinza na pasta Dados Derivados. Em seguida, exclua sua pasta do projeto.)
  • Clique em excluir na classe, remova a referência (não Mover para a Lixeira) e adicione-a novamente. (veja esta resposta )
Suragch
fonte
Não se esqueça de remover a classe no controlador de exibição para que esses passos vai funcionar
reggie
8
Nenhuma dessas etapas funcionou para mim no Xcode 8.3.2. Eu tive que "Show Identity Inspector"> limpe o campo "Class" (realce o nome da classe personalizada e exclua)> reinsira o nome da classe no campo "Class". O Xcode preencheu automaticamente o nome da classe. Eu então apertei enter.
PeqNP
Adicione a linha alias purgederiveddata='rm -rf ~/Library/Developer/Xcode/DerivedData/*'para o seu ~ / .bashrc para usar o comando purgederiveddatapara limpar com um comando
eskimwier
Encontrei outra maneira de corrigir esse problema. Isso aconteceu comigo quando alterei algumas configurações de compilação para melhorar minha velocidade de compilação. stackoverflow.com/a/50555888/2952876
Mathias Van Houtte
Eu recomendo fortemente que todos vocês experimentem minha solução abaixo. Seria bom saber que as pessoas estão tendo que reiniciar seus computadores por um bug que é exibido com frequência.
Stephen Paul
134

Ou, se nenhuma das opções acima funcionar, digite o nome da saída no arquivo primeiro @IBOutlet weak var headerHeightConstraint: NSLayoutConstraint!e clique e arraste da saída na ponta para a variável que você acabou de criar programaticamente. Ele deve funcionar sem o trabalho de limpar, construir e excluir qualquer coisa.

Stephen Paul
fonte
4
geralmente a solução mais rápida, em vez de gastar muito tempo para limpar, construir etc. etc.
21816 mohonish
1
Muito bom e, quando você faz isso, o Automático começa a aparecer, obrigado.
AmJa 4/16
1
Primeiro, conecte seu objeto XIB aos IBoutlets. Em seguida, tente conectar suas restrições IBOutlets. sem isso, sempre mostrará erro.
Chandramani
Também pode fazer a diferença quando você tenta inserir a nova tomada. Pois, o topo da lista (onde há espaço livre acima) funcionou; o meio da lista não.
Richard
1
Isso deve ser marcado como a melhor resposta. É mais fácil, mais rápido e mais confiável. Também funciona o tempo todo! Bom trabalho e obrigado @StephenPaul
denis_lor 11/02/19
51

Basta executar as duas etapas a seguir para se livrar desse erro

  1. Projeto limpo usando Produto> limpo
  2. Execute o projeto

Agora tente adicionar a ação ou tomada. É isso aí.

Happy Coding

Akshaykumar Maldhure
fonte
4
Estranho ... esses dois passos fáceis também ajudaram a resolver o problema. Então, eu recomendo, para tentar estas etapas fáceis primeiro :-)
crosscode
49

Nenhuma das dicas da melhor resposta funcionou para mim. Estava ficando louco. Então notei que o Assistente do Editor havia sido definido como Manual e eu estava no ViewController.swift (Interface) em vez do arquivo ViewController.swift.

Mudou isso e o problema foi resolvido. Um pouco embaraçoso, mas ei, estamos todos aprendendo.

insira a descrição da imagem aqui

Joshua Dance
fonte
1
Resposta de poupança de vida! Nenhuma das outras respostas resolveu isso de uma vez por todas. Pena que a descrição do erro não dê a menor dica de que você pode estar no arquivo desgastado. Obrigado. +1 para a imagem, tudo ficou claro.
Pauloco 14/06
Notei algo bem parecido, mas diferente: no caminho na parte superior, onde o nome da classe é exibido, havia apenas o nome da classe, mas faltava o início do caminho como myProject> appName> controller e depois a classe. Selecionei outra classe, em seguida, volta para a problemática, e tudo OK
claude31
15

Aqui estão os passos resolvidos para mim:

  1. Remova a referência do nome da classe da exibição (storyboard / xib) e salve;
  2. Adicione o nome da classe novamente e salve;
  3. Limpar e construir;

Feito !

Almeida
fonte
10

Eu tive o mesmo problema. Eu cansei das soluções, mas não funcionou:

  1. Clean Project (cmd + shift + k) e até mesmo Clean Project Build (cmd + shift + alt + k)
  2. Deleted Derived data e Module Cache content

Solução alternativa abaixo para esse problema:

  1. Vá para o arquivo de código-fonte e escreva IBOutlet / IBActionmanualmente (preferencialmente copiar e colar)

Captura de tela 1

  1. Em seguida, vá para o arquivo Storyboard e abra a Utilitesjanela
  2. Vamos para Connection Inspector
  3. Em seguida, conecte IBOutlete IBActionescreva no arquivo de origem com o Interface Builder.

Captura de tela 2

Jayprakash Dubey
fonte
Arrastar tomadas / ações não estava funcionando, mas depois que eu fiz isso manualmente, tudo funcionou corretamente novamente.
Jason
Este é um método alternativo padrão para fazer conexões. No caso de ações dos botões de opção, a única maneira, AFAIK. No storyboard, você também pode clicar com o botão direito do mouse no controlador, encontrar a função e fazer a conexão.
curto
8

Eu tive o mesmo problema. Percebi que o Manualitem X-Code foi selecionado quando tentei criar uma saída pressionando a tecla Control e arraste

insira a descrição da imagem aqui

Depois de configurá-lo para automático, funcionou

insira a descrição da imagem aqui

Vitalii
fonte
Eu tive esse problema exato. Nem percebeu a diferença.
Joshua Dance
Ótimo!!! Perdi tanto tempo nesse projeto de limpeza de bugs, reiniciando o xCode, excluindo dados derivados, mas essa foi a única solução que funcionou para mim! Muito obrigado!
Anton Eregin 7/03/2019
7

Resolvi esse problema criando programaticamente os campos Labels e Text e, em seguida, Command-Dragged dos pequenos círculos vazios à esquerda do código para os componentes no Storyboard. Para ilustrar meu argumento: escrevi @IBOutlet weak var HelloLabel: UILabel!, pressionei Command e arrastei o código para o componente no storyboard.

KuboAndTwoStrings
fonte
Esta solução funcionou perfeitamente para mim! Além do que @IBOutlet weak var myButton: UIButtoneu usei o mesmo processo para configurar @IBAction func doSomething(_ sender: Any) { }e, em seguida, conectei essa função ao UIButton no meu storyboard. Obrigado por compartilhar este @KuboAndTwoStrings
Nii Mantse
6
  1. Feche o projeto no qual você está trabalhando.
  2. Exclua a pasta "DerivedData" do seu projeto. (Essa pasta pode estar dentro da pasta do seu projeto, ou dentro
    ~/Library/Developer/Xcode/DerivedData/
    (do seu projeto) /) ou em algum outro lugar que tenha sido configurado por você.
  3. reinicie seu projeto.
Todos
fonte
4

Encontrei uma solução mais fácil, pois esse bug pode ser encontrado no XCODE 9.

Etapa 1, vá para o seu viewcontroller e escreva manualmente a propriedade que você deseja conectar como no exemplo abaixo. Certifique-se de usar o formato abaixo.

@IBOutlet fraca var perguntasStackView: UIStackView!

Etapa 2, vá para o storyboard e conecte sua visualização ou o que você estiver tentando conectar à propriedade que você criou na etapa 1.

O exemplo acima economizará tempo para remover e limpar os dados derivados.

Vision Mkhabela
fonte
3

Eu peguei esse bug quando renomeei a classe. Então eu resolvi apenas seguindo os passos abaixo

  • No menu Xcode -> Product->Clean
  • Restart o Xcode
Vinoth Vino
fonte
essa foi a única solução que funcionou para mim bastante engraçada.
Joseph Astrahan
2

No meu caso, isso foi porque eu escolhi um novo arquivo UIViewController no IB e tentei arrastar com a tecla Ctrl pressionada neste novo controlador sem primeiro remover as conexões anteriores no Connections Inspector. Remova os primeiros e tente novamente.

Marius Waldal
fonte
2

Para mim, funcionou quando na guia direita> Localização, marquei a caixa de seleção Inglês. Inicialmente apenas a Base foi verificada. Depois disso, não tive mais problemas. Espero que isto ajude!

lmicu
fonte
2

insira a descrição da imagem aqui

Selecionei a opção Automático para selecionar o arquivo ViewController.swift. E então eu posso tirar tomadas.

Arpit B Parekh
fonte
2

Execute as duas etapas a seguir apenas para se livrar desse erro.

1.  Clean Project using Product -> clean.
2.  Run the Project.

Agora tente adicionar / conectar as ações ou pontos de venda.

Trabalhando bem para mim por muitas vezes.

Devendra Singh
fonte
1

Aconteceu quando adicionei um Swiftarquivo a um Objective-Cprojeto.
Então, nessa situação, o que você pode fazer é. .

  • Select MY_FILE.Swift >> Delete >> Remove Reference
  • Select MY_FOLDER >> Add MY_FILE.Swift
  • Voila ! You are good to go .
Roy
fonte
Pronto para isso! Eu tenho tentado resolver esse problema sozinho por meia hora já lol. Problemas como este no Storyboards são fáceis de corrigir. Obrigado! Isso me ajudou muito!
Glenn
0

Solução mais simples: - usei xCode 7 e iOS 9.

no seu .m

delete #import "VC.h"

salve .m e conecte sua tomada novamente, funciona bem.

Ahmed Abdallah
fonte
0

Eu usei o xCode 7 e o iOS 9.

no seu .m

excluir #import "VC.h"

salve .m e conecte sua tomada novamente, funciona bem.

no seu .m

adicionar #import "VC.h"

salvar .m

Ahmed Abdallah
fonte
0

Nada disso funcionou para mim, mas eu descobri isso.

Dentro do storyboard , copiei o ViewController correspondente na área de transferência e o excluí, depois colei novamente.

De repente, tudo voltou a funcionar como um encanto!

Markus
fonte