Pergunta

Eu deixei cair um UINavigationBar no formulário XIB. Então eu deixei cair um UIButton no formulário (não no UINavigationBar). Eu mudei o tipo de InfoLight (de modo que ele se parece com um símbolo Info).

Em seguida, arrastou o UIButton para o UINavigationBar e configurá-lo para ser o botão direito. Ele magicamente muda o tipo de UIButton para UIButtonBarItem como resultado do arrasto.

Por que não eu só arrastou o UIButton para o UINavigationBar para começar? Porque, uma vez que o botão é lá, Interface Builder não vai deixar você alterar o tipo de InfoLight por qualquer motivo.

A no arquivo .h adjacente, eu criei uma declaração para o IBAction

- (IBAction) btnInfoClick; 

Em seguida, no arquivo .m, eu escrevi a implementação:

- (IBAction) btnInfoClick {
    // kick off the about screen
    // code follows
}

Como faço agora ligar o botão na barra de navegação à minha função btnInfoClick?

Ou eu estou indo pelo caminho errado para começar?

Gostaria de salientar que se eu simplesmente arrastar um botão da Biblioteca diretamente para a barra de navegação, eu posso clicar no ícone do proprietário do arquivo e arraste o IBAction btnInfoClick para o botão. Neste caso, a incêndios clique evento bem.

No entanto, no cenário onde eu primeiro arraste o botão em outro lugar e, em seguida, na barra de navegação, o evento nunca incêndios. Não sei o que estou fazendo de errado.

Foi útil?

Solução 2

Eu acho, é um bug no IB. Mas eu encontrei uma solução alternativa aqui . Reposting para a posteridade:

  1. Criar um botão no modo de exibição (não a barra de navegação!)
  2. Definir este botão para ser Informações Luz
  3. Definir a ação para este botão para ser toque Dentro Up
  4. Mova o botão para a barra de navegação

Outras dicas

Abra IB, selecione o UIBarButtonItem e no Inspector, vá para a guia Conexões.

Arraste a partir do ponto no direito de selector para a sua AppDelegate / dono do arquivo (aquele onde a ação foi definido) e selecione a ação.

Eu suponho que você já tentou isso, mas apenas no caso. Quando a ação não aparecer, tente ajustar sua definição de ação para ser algo como:

- (IBAction)btnInfoClick:(id)sender;

e tente o processo novamente. Eu sei que você realmente não tem que especificar o remetente (pelo menos por meio de programação, do jeito que eu sempre uso), mas eu tive o mesmo problema e depois de adicionar o remetente param funcionou corretamente.

Boa sorte e deixe-me saber se isso funciona!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top