Atualizei recentemente para o Xcode 8 e estou tendo problemas com o Storyboard.
Se eu abrir o projeto e não tiver o Storyboard aberto, ele será compilado e executado muito bem. Depois de abrir o Storyboard, recebo vários erros sobre o IB Designables, como mostrado abaixo.
Essas visualizações são as únicas que estão usando visualizações personalizadas TextFieldEffects
e BEMCheckbox
importadas usando Cocoapods.
ios
xcode8
xcode-storyboard
Alan
fonte
fonte
Respostas:
Você pode tentar uma das seguintes ações para descobrir a causa:
IBDesignablesAgentCocoaTouch
logs neste diretório:~/Library/Logs/DiagnosticReports
e veja a causa.Vá para o Editor -> Debug Selected View enquanto seleciona seu
@IBDesignable UIView
no storyboard e veja o rastreamento da pilha.Excluir pasta Derivar dados.
Limpe seu projeto
Shift
+Command
+Alt
+K
.Crie seu projeto
Command
+B
.fonte
Fatal error: Use of unimplemented initializer 'init(frame:)' for class 'TestIBKit.Button'
. Eu não sabia que oIBDesignablesAgentCocoaTouch
processo chamainit(frame:)
, em vez deinit?(coder aDecoder:)
.init(frame:)
na minha UIButton subclasseResolvi o problema, fazendo o seguinte:
File > Workspace settings
.DerivedData
pasta.DerivedData
pasta e exclua a pasta correspondente ao seu projeto.Editor > Refresh all views
.Atualizada
Às vezes, apenas diretamente Ir para o
Editor > Refresh all views
trabalho. SeRefresh all views
estiver desativado, feche o Xcode e tente novamente.fonte
Acabei de excluir a exibição que falhou e pressione o comando + Z para desfazer a exclusão. Funciona para mim.
Se editar a exibição com falha posteriormente, o erro poderá ocorrer novamente, faça o acima acima novamente.
fonte
Eu enfrentei esse problema no CocoaPod 1.5.0. A solução é reinstalar o pod novamente (instalação do pod novamente) assim que este erro aparecer ou você pode usar o CocoaPod 1.4.0. Funciona bem na 1.4.0 (pelo menos para mim.)
atualizar:
Adicionar o seguinte script no Podfile me ajuda a resolver o problema na versão 1.5.0
referência: https://github.com/Skyscanner/SkyFloatingLabelTextField/issues/201#issuecomment-381915911
fonte
s work for me, you should add
end` para durar de código.Adicionar o código a seguir à minha
@IBDesignable
classe fez o truque.fonte
UITextView
. (1)init(frame: CGRect, textContainer: NSTextContainer?)
, (2)init?(coder aDecoder: NSCoder)
. Em seguida, reconstrua e avise (erro) que foi. Nem precisa limpar a pasta de compilação.Para qualquer pessoa, como eu, que não consegue encontrar esse
IBDesignablesAgentCocoaTouch
arquivo ou ao tentar 'Depurar vistas selecionadas' no Editor obtém um erro, aqui está outra maneira de depurar os erros "Falha ao renderizar".Abra o aplicativo 'Console'; na barra lateral, selecione o seu Mac atual (provavelmente será selecionado automaticamente por padrão) e, na barra de pesquisa, pesquise "IBSceneUpdate" e pressione Enter.
Dessa forma, toda vez que você receber um erro do Xcode por
IBDesignable
não conseguir renderizar, também receberá uma nova entrada "IBSceneUpdate" com mais detalhes sobre o erro.Foi assim que eu pude depurar meus
IBDesignable
erros!fonte
Se você estiver usando o arquivo xib para a visualização personalizada. Tente o seguinte:
Alterar de
Para:
fonte
Tente desativar 'Usar variações de características' (painel Identidade e Tipo) para qualquer arquivo xib que você possa ter para visualizações personalizadas usadas em seu storyboard.
fonte
meu problema foi resolvido com a exclusão de pastas (relacionadas a este projeto) da pasta de dados derivados. você pode fazer isso clicando em Arquivo -> Configuração do projeto -> e, em seguida, clique no sinal de seta ao lado de /Users/.../Xcode/DerivedData clique na pasta DerivedData e verá as pastas nomeadas do seu projeto excluindo-as. saia do xcode para abrir seu projeto, limpe-o usando esta etapa Produto-> limpo e crie o projeto: Produto-> Construção Isso resolverá esses problemas.
fonte
Resposta correta fornecida por @Maria :
Maneira alternativa :
Spotlight
console.app
Crash reports
IBDesignablesAgent-iOS
e revise o log de falhafonte
Basta abrir seu storyboard -> Editor -> Atualizar todas as visualizações. Este trabalho para mim.
fonte
Tentei limpar e executar o projeto não resolverá esse problema.
Mas Close e reabriu o projeto.
fonte
Quando eu depurei isso, descobri que existem algumas classes que estão modificando a interface do usuário. Normalmente, marquelabel, que é uma subclasse de UILabel ou qualquer outra classe de subclasse de UIView, desenhando a interface do usuário em tempo de execução e colidindo com o mecanismo de Autolayout. Tente dar largura ou altura fixas para essas visualizações personalizadas. Se isso não resolver o seu problema, tente as seguintes soluções: -
Solução 1: - Remova o comentário #use_frameworks dentro do seu arquivo pod.
Solução 2: - Tente excluir dados derivados
fonte
Eu tive o mesmo problema e vim aqui para tentar descobrir o que aconteceu. Notei que a resposta mais votada e a resposta em si não me ajudaram, pois o IBDesignable não existia na pasta de log e eu já tentei todas as outras opções lá, no entanto, nos comentários, notei alguém falando sobre um init de quadro.
Decidi tentar comentar minha extensão do IBDesignable para o UIView e ele corrigiu o problema instantaneamente. Portanto, para corrigir isso, localize a extensão que está causando o problema e configure as unidades necessárias criando uma classe IBDesignable e fornecendo os inicializadores necessários da seguinte maneira:
IMPORTANTE: lembre-se de adicionar a nova classe ao item em que você está usando o design.
fonte
Mesmo erro: havia customizado o UITextField e usando o construtor de interface, o erro no console era -Uso do inicializador não implementado 'init (frame :)' para a classe "CustomField"
Adicionado o inicializador para corrigir o erro
fonte
Eu enfrentei esse problema após a atualização para a versão mais recente do XCode. Depois de tentar várias soluções descritas acima, eu apenas utilizei o Xcode e desliguei o sistema, ligue-o e funcionou para mim.
fonte
Depois de fazer as alterações necessárias, altere o storyboard ou, no meu caso, um .xib para abrir no "XCode 7", salve e feche. Essa é apenas uma medida para eliminar os erros, mas você precisará corrigi-los ou fazer isso até não conseguir mais.
fonte
No meu caso, eu estava usando uma biblioteca que estava subclassificando
UIView
. Estava usandoIB_DESIGNABLE
e faltou uma chamada para[super awakeFromNib]
. Depois de adicionar a chamada a esse método, o bug desapareceu.Não tenho certeza se o fato de estar implementando
IB_DESIGNABLE
teve um impacto nisso.fonte
Esta é a maneira mais fácil para mim: adicione este script ao seu
Podfile
Podfile:
Fonte:
Esta solução alternativa para @IBDesignable pode ser encontrada aqui: https://github.com/CocoaPods/CocoaPods/issues/5334
fonte