IBOutlet e IBAction

Qual é o propósito de usar IBAction e IBOutlet na codificação Objective-C para o iPhone? Será que faz alguma diferença se eu não usá-los?

IBAction e IBOutlet são macros definidas para denotar variables ​​e methods que podem ser referenciados no Interface Builder.

IBAction resolve void e IBOutlet resolve nada, mas eles significam para o construtor Xcode e Interface que essas variables ​​e methods podem ser usados ​​no construtor Interface para vincular elementos da interface do usuário ao seu código.

Se você não vai usar o Interface Builder, então você não precisa deles no seu código, mas se você for usá-lo, então você precisa especificar o IBAction para os methods que serão usados ​​no IB e no IBOutlet para objects que serão usados ​​no IB.

A maneira tradicional de marcar um método para que ele apareça no Interface Builder, e você pode arrastar uma conexão para ele, foi fazer com que o método retornasse o tipo IBAction. No entanto, se você fizer o seu método nulo, em vez disso (IBAction é # definido para ser nulo), e fornecer um argumento (id), o método ainda é visível. Isso proporciona flexibilidade extra,

Todos os 3 destes são visíveis a partir do Interface Builder:

 -(void) someMethod1:(id) sender; -(IBAction) someMethod2; -(IBAction) someMethod3:(id) sender; 

Consulte o Guia do usuário do Interface Builder da Apple para obter detalhes, especialmente a seção intitulada Integração do Xcode.

Você precisa usar IBOutlet e IBAction se você estiver usando o construtor de interface (daí o prefixo IB) para seus componentes GUI. O IBOutlet é necessário para associar propriedades em sua aplicação com componentes no IB, e o IBAction é usado para permitir que seus methods sejam associados com ações no IB.

Por exemplo, suponha que você defina um botão e um label no IB. Para alterar dinamicamente o valor do marcador ao pressionar o botão, você definirá uma ação e uma propriedade em seu aplicativo de maneira semelhante a:

 UILabel IBOutlet *myLabel; -(IBAction) pushme; 

Então no IB você conectaria myLabel com o label e conectaria o método pushme com o botão. Você precisa do IBAction e do IBOutlet para que essas conexões existam no IB.

O Construtor de Interface usa-os para determinar quais membros e mensagens podem ser “conectados” até os controles de interface que você está usando em sua janela / visualização.

IBOutlet e IBAction são puramente lá como marcadores que o Interface Builder procura quando analisa seu código em tempo de design, eles não têm qualquer efeito no código gerado pelo compilador.

IBAction e IBOutlets são usados ​​para ligar sua interface feita no Interface Builder com o seu controlador. Se você não usasse o Interface Builder e construísse sua interface completamente em código, poderia criar um programa sem usá-lo. Mas, na realidade, a maioria de nós usa o Interface Builder, uma vez que você deseja obter alguma interatividade em sua interface, você terá que usar IBActions e IBoutlets.

Um Outlet é um link do código para a interface do usuário. Se você quiser mostrar ou ocultar um elemento da interface do usuário, se você deseja obter o texto de um campo de texto ou ativar ou desativar um elemento (ou uma centena de outras coisas), é necessário definir uma saída desse object nas fonts e vinculá-lo. através do “object de interface” para o elemento da interface do usuário. Depois disso, você pode usar a tomada como qualquer outra variável em sua codificação.

IBAction – um método especial acionado por objects da interface do usuário. O Interface Builder os reconhece.

 @interface Controller { IBOutlet id textField; // links to TextField UI object } - (IBAction)doAction:(id)sender; // eg called when button pushed 

Para mais informações, consulte o documento da Apple.

Corri para o diagrama enquanto olhava para a codificação de valores-chave, achei que isso poderia ajudar alguém. Isso ajuda na compreensão do que é o IBOutlet.

Observando o stream, pode-se ver que os IBOutlets estão lá apenas para combinar o nome da propriedade com um nome de controle no arquivo Nib.

Como o arquivo nib é carregado, captura de tela do livro on-line de Matt para iOS6

quando você usa o Interface Builder, você pode usar o Connections Inspector para configurar os events com manipuladores de events, os manipuladores de events devem ser as funções que possuem o modificador IBAction. Uma visão pode ser vinculada à referência para o mesmo tipo e com o modificador IBOutlet.