Estou tentando criar uma ponta que contém um modo de exibição que será incorporado em um TableViewCell. Criei a interface e os arquivos de implementação ResultCell.h
e ResultCell.m
. Eles são padrão, prontos para uso, sem alterações de código.
Em seguida, crio um arquivo XIB vazio e arrasto um UIView para ele. Em seguida, clico em Proprietário do arquivo e defino o tipo como ResultCell
. Eu clico na visualização e defino sua classe como também ResultCell
.
Aqui estão os problemas que tenho:
- Ao usar a visualização do Editor Assistente (na qual moro), o
ResultCell.h
arquivo não aparece quando estou visualizando o arquivo ResultCell.xib. Tenho que forçar o carregamento clicando em Automático e selecionando o arquivo. - Quando solto um rótulo na visualização e, em seguida, Ctrl + Clique e arrasto para o .h para criar uma tomada, recebo esta mensagem de erro: " Não foi possível inserir uma nova conexão de tomada: não foi possível encontrar nenhuma informação sobre a classe chamada ResultCell. "
Tentei criar e recriar a exibição, mas não está funcionando e comecei a perder a paciência. Qualquer ajuda seria muito, muito apreciada!
Respostas:
Isso pode não funcionar para o seu problema específico, mas ocasionalmente recebo esse erro ao trabalhar com pontas recém-criadas. Excluir e recriar os nibs e os controladores de visualização com os mesmos nomes de antes não resolveu o problema, mas relançar o Xcode resolveu.
fonte
~/Library/Developer/Xcode/DerivedData
)Eu entrei em um estado semelhante hoje. Foi muito estranho: eu poderia anexar qualquer XIB (novo ou existente) a qualquer classe ViewController já existente no projeto, mas não consegui criar um novo ViewController e anexá-lo corretamente a qualquer XIB. A funcionalidade "assistente" não funcionou, nem a funcionalidade de conexão IB-para-headerfile.
Fechar o projeto e reabri-lo não resolveu.
Sair do XCode e reiniciar não resolveu o problema.
Criar um novo projeto e testar a funcionalidade funcionou bem, o que me levou a acreditar que havia algo corrompido em algum cache em algum lugar.
Minha solução
A propósito, apenas fazer uma limpeza completa não parecia esclarecer as coisas. Eu tive que destruir os dados derivados. Tenho certeza de que fiquei nessa posição por causa dos jogos git que estava jogando, mas não tinha ideia de como sair, porque mesmo voltar para as revisões anteriores do git não ajudou. (Essa também foi uma grande pista de que era algo não rastreado pelo próprio projeto.)
fonte
Acabei de ter esse problema e reiniciar o Xcode não resolveu. Eu removi os arquivos da classe do projeto, então os adicionei de volta e ele começou a funcionar.
fonte
Eu tive o mesmo problema. E eu tentei:
Nada disso funcionou. O que funcionou para mim foi simplesmente:
E feito!
fonte
Se reiniciar o Xcode não funcionar com você, descobri que Alternar o novo arquivo .m para fora e de volta para a associação de destino funciona.
fonte
Isso me ajudou:
Se você não vir um "painel", dê uma olhada no canto superior direito da janela e habilite os botões de "visualização" adequados. Se você não vir os botões "visualizar", clique no botão da cápsula mais à direita.
fonte
Percebi que o arquivo .m foi movido para dentro da pasta en.lproj.
Apenas exclua (apenas referência) o arquivo .m do Xcode e mova .m para fora do en.lproj. Adicione-o novamente. Isso resolverá o problema.
Não se preocupe, você receberá todas as suas conexões de volta.
fonte
Eu encontrei o mesmo problema hoje. Reiniciar o XCode não resolveu o problema para mim. Consegui voltar ao normal usando a opção "Excluir" de "Dados Derivados" do projeto que pode ser encontrado no Organizer . O Organizer diz que, "Dados derivados incluem índice, saída de construção e logs". Acho que o índice ou a saída da compilação estavam causando esse problema.
fonte
no XCode vá para o organizador, clique no projeto, clique em excluir dados derivados ... e limpe o projeto
fonte
No meu caso, ajudou a fazer uma "mudança falsa" (apenas um espaço) para o arquivo de cabeçalho correspondente.
fonte
UITableViewCell
UIView
para a tela vazia, você deve arrastar umUITableViewCell
Toda vez que você quiser carregar um novo celular, ligue:
[[NSBundle mainBundle] loadNibNamed:nibName owner:controllerWithOutletToCell options:nil]
após o carregamento, use a célula e defina a ivar / saída para zero, pronto para a próxima carga
existem outras formas, mas isso é comum
fonte
Talvez o que funcionou para mim seja isso .. (Xcode v4.5)
Isso não funcionou
Eu estava tentando controlar o arrasto para a definição da interface do meu .h
@interface SearchViewController : UIViewController
@end
Funcionou (pode ser assim que deveria funcionar, eu não sabia antes) Veja os colchetes de abertura e fechamento. Controlar arrastar e soltar após o colchete fechado.
@interface SearchViewController : UIViewController { } @end
fonte
Tive um problema semelhante com um projeto escrito em Swift.
O que funcionou para mim foi configurar o IBOutlet em um código como este
@IBOutlet var foo: UIView?
e depois conecte-o ao Interface Builder arrastando-o até o pequeno círculo que apareceu ao lado da linha de código.
fonte
Nenhuma das soluções alternativas acima resolveu o problema do conector para mim, então engavetei meu projeto de estimação até encontrar o seguinte thread de stackoverflow:
https://stackoverflow.com/a/15873770/2846800
Eu estava trabalhando em um grande projeto em uma versão anterior do XCode e desativei a indexação. Ao reativar a indexação, meu problema foi corrigido:
defaults delete com.apple.dt.XCode IDEIndexDisable
Agora posso usar os recursos de D&D do Interface Builder. Espero que isso possa ajudar outros ...
fonte
Este problema parece ser um bug do Xcode que surge principalmente quando você substitui um arquivo por um novo arquivo com o mesmo nome. O Xcode parece manter uma referência do arquivo mais antigo de mesmo nome.
De qualquer forma, a maneira de consertar isso parece ser:
(As etapas 1 e 2 resolveram sozinho para mim.)
fonte
Se você copiou arquivos de outro projeto, certifique-se de marcar a caixa 'Adicionar aos destinos'
fonte
Renomear os arquivos de classe pode desvinculá-los do XIB. Essa resposta me ajudou a descobrir isso:
Ctrl-arraste do botão para o método que não funciona. Xcode / Interface Builder
Verifique se sua classe personalizada está definida corretamente no Identity Inspector.
fonte
Sintoma semelhante, mas causa diferente.
Aparentemente, apertei a tecla de retrocesso quando o foco estava na visualização do assistente, porque uma das linhas de comentário do modelo de arquivo padrão foi de // para / o que resultou na não compilação do arquivo.
A correção do comentário permitiu que o SDK analisasse o arquivo, reconhecesse-o como um UIViewController e adicionasse no outlet.
SO - se você tiver este problema, faça uma compilação ou analise para ver se há erros que precisam ser corrigidos no arquivo .h do controlador de visualização. ENTÃO tente as outras soluções.
fonte
Esse pode ser um tópico antigo, mas caso alguém tenha o mesmo problema no futuro, tente excluir os arquivos .xib, .h e .m associados e criar novos. Para mim, o UIViewController no meu arquivo .h não estava roxo e mesmo retroceder e digitar não ajudou.
fonte
Basta colocar uma linha entre @implementation e @synthesize. A maioria das respostas aqui tem isso em comum. Funcionou para mim
@implementation @synthesize
fonte
Acabei de tentar de tudo aqui e nada funcionou (usando um Developer Preview para Xcode 5).
A única coisa que funcionou para mim foi colocar esta linha incompleta no meu arquivo de interface:
@property (nonatomic, weak)
Por alguma razão, adicionar pontos de venda e ações arrastando e soltando de um .xib funcionou bem depois disso.
fonte
Para mim, limpar ou excluir os DerivedData resolveu o problema.
Tentei excluir e recriar minha classe UIViewController várias vezes e tive o problema novamente.
Em seguida, recriei a classe UIViewController e dei a ela um nome diferente. Isso resolveu o problema para mim.
fonte
Eu tive esse problema e encontrei uma solução não listada acima.
No meu caso, pude ver que havia algo errado no arquivo .h da classe porque meu controlador de visualização personalizada não reconheceu a classe: UIViewController (estava em preto e não em roxo). Todos os outros controladores de visualização personalizados tinham: UIViewController em roxo.
no meu caso, e possivelmente no seu, precisei adicionar a classe ao menu suspenso alvos / fases de construção / fontes de compilação. O .m precisa ser adicionado. Todos os outros .m estavam lá, mas não este.
Depois de adicioná-lo, o: UIViewController apareceu em roxo e tudo funcionou bem.
fonte
No meu caso, tenho vários projetos com algumas outras dependências. Tentei resolver isso excluindo dados derivados ou reiniciando o XCode, mas não funcionou. No final, tentei o seguinte método e funcionou:
Vá para target> Build Target Architectures Only> e defina Debug e Release como NO.
Defina isso para todos os projetos na área de trabalho e recompile para garantir que não haja outros erros. Talvez não fizesse sentido, mas de alguma forma fazia. Durante minha compilação, tive outros problemas, como erros de linker e símbolos não encontrados.
fonte
Para o arquivo * .m desta visualização de classe, abra "Mostrar Inspetor de Arquivos" e desmarque "Associação de destino" para este projeto, então faça Limpar (menu Produto-> Limpar) e marque novamente "Associação de destino" para este projeto
fonte
Usando o Swift, tive um problema semelhante. Descobri que os comentários eram parte do problema para mim.
Aproveitei o controlador de visualização padrão, trabalhei nele e criei um segundo controlador de visualização copiando o primeiro inteiro, reduzindo-o para apenas viewDidLoad () e renomeando a classe para TestViewController. Builds funcionaram, código executado. Tudo estava bom.
Quando fui arrastar um UITextField para criar uma saída, ele não permitiu. Percebi que meus comentários ainda diziam "ViewController.swift", então mudei o texto do comentário para "TestViewController.swift" e recompilei. Consegui conectar minha tomada!
Eu me pergunto se o que aconteceu é que o Indexador estava lendo os comentários, bem como os nomes das classes, e de alguma forma ficou confuso.
fonte
Espero que isto seja útil a alguém.
Eu só tive que excluir a pasta de dados derivados. Você precisa clicar em Janela -> Organizador -> Projetos -> Excluir Dados Derivados
E REINICIE XCODE.
Você deve estar pronto para ir!
fonte
O fato de a nova classe não fazer parte do "ALVO" é provavelmente a causa raiz disso, conforme aludido por algumas dessas respostas.
Ao criar uma nova classe de cacau, por padrão, a opção de adicionar uma nova classe ao destino é marcada por padrão, mas deve, por qualquer motivo, isso não ser verificado quando você clicar em salvar, você terá esse problema.
Qualquer uma dessas soluções alternativas que adicionam a nova classe ao destino de aplicativos funcionará para resolver o problema, e é algo que todas essas 'correções' têm em comum.
Acho que o XCode provavelmente tem alguns bugs que fazem com que um novo arquivo, por padrão, NÃO seja adicionado ao destino principal do aplicativo. A correção se resume a adicionar sua classe 'quebrada' ao TARGET principal
fonte
No XCode 7.1, adicionar o conector em um ponto diferente no meu arquivo de origem funcionou. O erro que estava recebendo referia-se a uma das minhas variáveis como se fosse uma classe (não fazia sentido). O erro parou de ocorrer quando adicionei o conector abaixo dessa variável em vez de acima dela.
fonte
Há também um motivo diferente para o problema ... se você criou um novo arquivo de classe cocoa com um modelo diferente de ios ... eu posso acontecer ...
A solução seria excluí-lo e recriá-lo com o modelo correto
fonte