Continuo recebendo o seguinte erro:
Storyboard (<UIStoryboard: 0x7ebdd20>) doesn't contain a view controller with identifier 'drivingDetails'
Este é o código:
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"drivingDetails"];
controller.title = [[dao libraryItemAtIndex:indexPath.row] valueForKey:@"name"];
[self.navigationController pushViewController:controller animated:YES];
}
Eu já definiu o identifier
no UIStoryboard
, mas ainda estou recebendo este erro.
ios
objective-c
xcode
storyboard
Esteira
fonte
fonte
Respostas:
Apenas para referência futura:
Estou desenvolvendo no iOS 6 usando Storyboards.
Eu estava com o mesmo problema, mas não consegui encontrar o campo "Identificador" no inspetor. Em vez disso, basta definir o campo chamado "ID do storyboard" para o que você chamaria de identificador. Esse campo pode ser encontrado na guia "Mostrar o inspetor de identidade" no inspetor.
[Nota - os comentários abaixo indicam que algumas pessoas descobriram que precisam (também?) Definir o campo "ID de restauração" logo abaixo da ID do storyboard no inspetor. Clicar em "Usar ID do Storyboard" não parece suficiente.]
Há uma imagem abaixo para referência: (nesse caso, nomeei meu identificador como igual à minha classe)
fonte
No Xcode 7 - 11 ,
quando você altera os IDs do storyboard e obtém erros como este,
apenas LIMPO seu projeto ( CMD+ SHIFT+ K)
fonte
Fixo! Não apenas o identificador no segue deve ser definido, no meu caso, DrivingDetails, mas também o identificador em meu tableViewController deve ser definido como DrivingDetails ... veja minha imagem:
Também removi o controlador de visualização de navegação, agora os dois controladores de visualização de tabela estão conectados diretamente com uma animação "push".
***** EDIT para XCODE 7.0 *****
você precisa definir o storyboardId (nesse caso, o viewController é incorporado em um controlador de navegação:
fonte
[storyboard instantiateViewControllerWithIdentifier]
NÃO instancia as visualizações do Interface Builder dentro do controlador de visualização; mas no iOS6 ele fez #Nota:
"StoryboardFileName"
é o nome do arquivo do Storyboard e não o ID do storyboard!"StoryboardID"
é o ID que você definiu manualmente no inspetor de identidade para esse storyboard (veja a captura de tela abaixo).Às vezes, as pessoas acreditam que o primeiro é o Storyboard ID e o segundo o nome da classe View Controller, portanto, observe a diferença.
fonte
.instantiateViewController(withIdentifier: "StoryboardID")
deve ser renomeado para.instantiateStoryboard(withIdentifier: "StoryboardID")
Ou apenas algo mais simplesUIStoryboard(name: "StoryboardFileName", bundle: nil).init()
Identidade localizada na guia Identity Inspector denominada ID do Storyboard para Xcode 6.3.2 e marcada a opção Usar ID do Storyboard.
fonte
Acabei de ter esse problema depois de adicionar um novo VC ao storyboard, mas apenas no dispositivo, não no simulador. Acontece que isso ocorreu devido a várias localizações de storyboard - o VC foi adicionado apenas ao principal. Tentei remover as outras localizações (uma das quais é usada pelo meu iPhone), mas ainda tinha o erro. No final, tive que recriar as outras localizações com o novo VC em cada uma delas.
fonte
O compilador mostra o seguinte erro:
Aqui, o objeto do storyboard criado não é o storyboard principal que contém nossos ViewControllers. Como arquivo de storyboard no qual trabalhamos é nomeado como Main.storyboard . Então, precisamos ter referência ao objeto do Main.storyboard .
Use o seguinte código para isso:
Aqui
storyboardWithName
está o nome do arquivo de storyboard com o qual estamos trabalhando ebundle
especifica o pacote em que está o nosso storyboard (ou sejamainBundle
).fonte
Para aqueles com o mesmo problema que @Ravi Bhanushali, aqui está uma solução Swift 4:
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
fonte
Eu encontrei ... clique no controlador de exibição no storyboard, clique no terceiro ícone à esquerda nos inspetores de atributos de vc - aquele em que você define o nome da chamada na tela que diz 'identidade' - o meu estava escondido, eu tinha que clique na palavra identidade que mostra o storyboardID - adicione o identificador do código, pronto
fonte
A modificação de "ID do storyboard" no inspetor de identidade (o terceiro ícone à esquerda) deve funcionar.
Caso contrário, e você tem certeza de que não há erro de digitação, tente limpar o projeto ("Produto" -> "Limpar" ou simplesmente comando + shift + K).
fonte
Ao digitar o identificador, você não selecionou o controlador de visualização adequado, basta verificar uma vez se estiver pronto, repita o procedimento mais uma vez.
fonte
Alguns dos meus controladores de exibição estavam ausentes do atributo storyboardIdentifier .
Antes:
Depois de:
fonte
Eu recebi o mesmo erro e poderia corrigir isso alterando as seguintes alterações no meu projeto. Mencionei o nome da minha classe no painel do inspetor e o problema foi resolvido. Ir para-> painel direito lá Identity Inspector Na seção de classe personalizada
classe: o nome da sua classe (ViewController)
Na identificação do storyboard da seção Identity: seu ID do storyboard (nome do viewController)
Depois disso, clique na opção Usar ID do storyboard por lá. É isso que o problema está concluído. Espero que ajude você ....
fonte
Use seu identificador (@ "drivingDetails") como ID do Storyboard.
fonte
é muito simples selecionar o respectivo controlador de exibição no storyboard principal e verificar o storyboardID, se presente, usá-lo no identificador de nome e usá-lo.
aqui meu primeiro é o storyboardID, deixe vc = self.storyboard? .instantiateViewController (withIdentifier: "firstone") as! tabBarViewController
fonte
Eu tentei todas as soluções acima e nenhuma funcionou.
O que eu fiz foi:
E então deu certo. O mais chocante foi que eu havia inserido o ID do Storyboar no construtor de interfaces e ele foi removido / excluído depois de abrir o Xcode novamente.
Espero que isso ajude alguém.
fonte
Limpar tudo e fechar o Xcode não resolveu o problema para mim.
Eu tive que excluir o viewController e criar um novo com o novo identificador.
fonte
Nota: Se você usar cocoapods em seu projeto, primeiro execute
pod deintegrate
erm Podfile.lock
Em seguida, abra a pasta do projeto em qualquer editor de código de terceiros como o VSCode e faça uma pesquisa global pelo nome do ViewController que gera o erro.
Tudo deve funcionar bem agora.
Isso geralmente ocorre quando você renomeia arquivos do Xcode.
fonte
O XCODE DRAG N DROP PANE FOI IDO !!!
fonte