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


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 )

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.


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


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


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 !


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


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


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.


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.

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.


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

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.


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!


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.


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.


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 .

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.


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


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!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.