xcode / storyboard: não é possível arrastar o botão da barra para a barra de ferramentas na parte superior


99

Eu tenho um controlador de visualização que é a visualização de detalhes de uma tabela. Ao clicar na linha da tabela, você é direcionado para a visualização de detalhes. A visualização de detalhes está embutida em um controlador de navegação de forma que haja um botão no canto superior esquerdo da barra de navegação que o envia de volta à mesa. Por enquanto, tudo bem.

Agora quero adicionar um botão de edição ao lado direito da barra de navegação para que você possa editar a visualização de detalhes. Meu plano é adicionar outro controlador de visualização modalmente que permite editar os detalhes do item. Coisas padrão.

No entanto, quando tento arrastar um item do botão da barra da lista de objetos para a barra de navegação, ele não funciona. Em vez disso, quando eu solto o botão do mouse, ele deixa o botão da barra no controlador da barra de guias na parte inferior. (Meu esquema de navegação inclui guias diferentes e para cada guia uma tabela, visualização de detalhes etc.)

Qualquer um que já passou por isso antes pode sugerir o que estou fazendo de errado ou algum tipo de solução alternativa para adicionar o item do botão da barra ao lado direito da tela de navegação. Tenho que adicionar no código?

Obrigado por qualquer sugestão.


Confira o seguinte tutorial brianflove.com/2012/10/01/…
casillas

Consegui adicionar o botão usando self.navigationItem.rightBarButtonItem = self.editButtonItem; e criei um novo editvc no storyboard, no entanto, não tenho certeza de como criar segue. Não é possível fazer isso no storyboard porque o botão de edição não está visível, então acho que deve estar no código. vai tentar preparar-se?
user1904273

Se uma das respostas ajudou você, você deve aceitá-la :)

Respostas:


157

Tive o mesmo problema ao usar o Xcode6 e percebi que UINavigationItem é adicionado automaticamente para o primeiro ViewController que você incorpora no NavigationController, mas para os ViewControllers subsequentes, você terá que adicioná-lo manualmente da seguinte maneira:

  1. Na biblioteca de objetos, encontre o item de navegação e arraste-o para o segundo ViewController no storyboard.
  2. Na biblioteca de objetos, localize o item do botão da barra e arraste-o para o item de navegação que você criou na etapa anterior.

Agora você terá seus botões de barra presos no topo de sua cena.

Atualizar A solução ainda funciona com o XCode 7, mas eu queria adicionar uma foto mais descritiva. Apenas no caso de alguém não estar realmente familiarizado com os nomes padrão ou técnicos mencionados acima. Observe as setas vermelhas à direita; elas se referem à etapa 1, etapa 2 mencionada acima. Observe também a hierarquia de visualizações no retângulo vermelho esquerdo. insira a descrição da imagem aqui


2
Sim, isso bastou para mim. Acho que essa é a resposta correta, o XCode não parece adicionar o Item de Navegação aos ViewControllers subsequentes.
Jeremy Chone

isso está correto, mas a seta vermelha na imagem deve ir do item do botão da barra na biblioteca de objetos até a caixa vermelha esquerda.
malhal

Você pode soltá-lo na tela, bem como indicado pela seta vermelha, ou pode soltá-lo no contorno do documento conforme sugerido. Não faz diferença
Wael Showair

Ainda bem que encontrei esta resposta porque funciona muito bem - só estou perplexo porque o UINavigationItem ainda não está lá no Storyboard? Obviamente, está lá em tempo de execução, porque o código self.navigationItem.rightBarButtonItem = ...funcionará. Estou supondo que o UINavigationController no primeiro VC o instancia para todos os VCs subsequentes colocados na pilha. No entanto, arrastando um manualmente para lá, por que você não acaba com 2 UINavigationItems um sobre o outro? O que você arrastou manualmente e o que já está lá do UINavigationController?
James Toomey de

70

Truque desagradável:

  1. Mude sua segue para push.
  2. Defina o conteúdo de que você precisa
  3. Voltar para mostrar

Então, o conteúdo será editável e você terá um estilo não obsoleto para segue.


Cara, tão feio. Mas isso funciona para UIBarButtonItemem um controlador de visualização no Xcode 7.3 .
mikeho

OMG, ainda está funcionando no XCode 8.2.1. Quando será consertado? Nunca, provavelmente
Dima Rostopira

Esta é a única maneira que encontrei sem adicioná-la por código.
Josué

Oh Deus ... Obrigado (y)
Nasir Khan

Eu não posso acreditar que este bug ainda está aqui depois de mais de 2 anos
Carioni 01 de

33

O controlador de visualização do seu storyboard provavelmente está faltando a Navigation Item. Você pode arrastar um da biblioteca de objetos e soltá-lo em seu controlador de visualização.

Você poderá então arrastar e soltar itens do botão da barra para o lado esquerdo ou direito da barra de navegação.


1
isso funcionou, mas eu sinto que isso costumava ser feito automaticamente, desde que você tivesse um push segue para um controlador
aryaxt 02 de

Esta deve ser a resposta correta. O resto me parece hackeado
MK Yung

23

eu resolvi. arraste o 'Item de navegação' para a visualização de detalhes. do que você pode arrastar no item do botão da barra.


8

A maneira como eu corrigi esse problema foi, em vez de arrastar um UINavigationController para o Storyboard e tentar adicionar UIBarButtonItems a ele, arrastei um UITableViewController e fui para

Editor-> Incorporar-> Controlador de Navegação

O que deu o mesmo resultado de antes, exceto que pude adicionar UIBarButtonItems a ambos os lados da barra de navegação sem problemas.


Você deve subir !!
Vin

5

É realmente um problema com o xcode. Um truque que funcionou para mim é adicionar o botão da barra em VER ESTRUTURA DO ARQUIVO À ESQUERDA.Instaed adicionar a exibição diretamente. Espero que ajude você. :)


Isso funciona! Acho que essa é a solução, desde que a Apple conserte o bug com o Xcode 8.2
Arjun Kalidas

5

Eu acho que é um bug. Eu tive o mesmo problema. Resolvi este problema desabilitando as classes de tamanho e depois habilitando.

Você pode desativar e ativar as classes de tamanho no documento do construtor de interface.

insira a descrição da imagem aqui


4

Eu também tive esse problema, fechar e reabrir o projeto funcionou para mim.


3

Eu acredito que é uma peculiaridade do XCode. Eu tive o mesmo problema. Tive que redefinir o Xcode e mudar o posicionamento das coisas no storyboard para finalmente fazê-lo funcionar. Está funcionando agora.


3

Acho que é um bug do Xcode. No Xcode 8, mude o seguestoryboard antes do controlador de visualização da barra de guias para todas as suas opções ( show detail, present...). Então, de volta para show. Tente arrastar os itens do botão da barra e modificar o bloco. Funciona para mim!


1

Você tentou "limpar" seu projeto? Sei que às vezes me ajuda (basta ir em "Produto"> "Limpar"). Ou, como alternativa, exclua a barra de navegação e tente novamente.

Se você acha que é um erro de programação, fique à vontade para repassar seu código. Ficarei feliz em ajudar no que puder. :)


1

Você deve redefinir o xCode IDE. Feche o xCode e escreva os códigos abaixo no terminal ... Funcionará.

rm -rf $HOME/Library/Application Support/Developer/Shared/Xcode
rm -rf $HOME/Library/Preferences/com.apple.dt.Xcode.*
rm -rf $HOME/Library/Saved\ Application\ State/com.apple.dt.Xcode.savedState
rm -rf $HOME/Library/Developer/Xcode

1

O mesmo problema. Eu tinha um Table View Controller dentro de um Navigation Controller e muitos ViewControllers seguindo mais abaixo na cadeia. Um 'Item de navegação' estava sendo criado automaticamente para o controlador de visualização raiz FIRST e eu poderia adicionar um 'Item de botão de barra' a ele sem problemas. Através do Storyboard, arraste e solte. Mas isso é tudo. No Controlador de visualização de tabela a seguir e outros controladores de visualização, mesmo que estivessem dentro do Controlador de navegação inicial (o botão voltar gerado automaticamente apareceu), o storyboard nunca me deixaria adicionar um item de botão de barra.

A solução de Wael Showair não funcionou para mim. Os itens do botão da barra não apareceriam.

Resolvi isso programaticamente no final (Swift 2.0):

var testButton = UIBarButtonItem(title: "Test Button", style .Plain, target: self, action: "testButtonMethod")
self.tabBarController?.navigationItem.rightBarButtonItem = testButton

Nenhum item de navegação extra ou item de botão de barra necessário.


1

Eu também estava enfrentando o mesmo problema. Consegui corrigir esse problema selecionando a opção do controlador de visualização raiz e, em seguida, na matriz simulada, alterei a opção Barra superior para Barra de navegação opaca e fui capaz de adicionar o item no topo da barra de navegação. Esperança esta resposta vai ajudar alguém.


1

Tive o mesmo problema no xcode 8. Tive que simplesmente fechar o xcode e reabrir o projeto e, em seguida, fui capaz de adicionar o botão da barra ao controlador raiz sem problemas.


1

Para XCode 8

Existem muitas respostas aqui. Tentei alguns deles, mas não consegui. Então eu encontrei minha solução, apenas selecione seu ViewController, vá para a seção Attributes Inspector e altere a barra superior para barra de navegação opaca e barra. Você verá a barra de navegação em seu storyboard. Você pode alterar o título ou adicionar algum item. Se não quiser manter opaco, você pode alterar o estilo para inferido .

insira a descrição da imagem aqui


1

No Xcode 10, eu apenas mudei o tipo de segue indo para este novo controlador de visualização para 'Push (obsoleto)', adicionei o item de navegação como era permitido depois que fiz essa troca. Se você voltar ao tipo de segue desejado originalmente, o item de navegação permanecerá.


0

Em vez de arrastar o "Item do botão da barra" para o "Controlador de navegação", arraste-o para o "Controlador de visualização de detalhes". Conforme você incorpora a visualização de detalhes na "Visualização de navegação", "Item de navegação" é adicionado ao "Controlador de visualização de detalhes". Se você arrastar o "Item do botão da barra" para o lado direito do item de navegação, o item será incluído em "Itens do botão da barra direita"


0

como disse Mark Lyons, usei a mesma solução.

  • usei push segue primeiro
  • adicionou o item da barra
  • voltar para mostrar segue
  • feito

0

No Xcode 11, você pode arrastar um botão para a barra de navegação para criar seu botão de barra.

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.