Pergunta

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

Foi útil?

Solução

IBAction e IBOutlet são macros definidos para variáveis ??e métodos denotar que podem ser referidas no Interface Builder.

resolve IBAction para void e IBOutlet resolve nada, mas eles significam para Xcode e Interface Builder que estas variáveis ??e métodos podem ser usados ??no construtor de interface de elementos ligação de interface do usuário para o seu código.

Se você não está indo usar Interface Builder em tudo, então você não precisa-los em seu código, mas se você estiver indo para usá-lo, então você precisa especificar IBAction para os métodos que serão utilizados na IB e IBOutlet para objetos que serão usados ??no IB.

Outras dicas

A maneira tradicional de bandeira um método para que ele aparecerá no Interface Builder, e você pode arrastar uma conexão com ele, tem sido a de fazer o tipo de retorno do método IBAction. No entanto, se você fizer o seu método vazio, em vez disso (IBAction é # define'd ser void), e fornecer um argumento (id), o método ainda é visível. Isso proporciona flexibilidade extra, al

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

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

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

Você precisa usar IBOutlet e IBAction se você estiver usando construtor de interface (daí o prefixo IB) para os seus componentes GUI. IBOutlet é necessário para propriedades associados em seu aplicativo com componentes em IB, e IBAction é usado para permitir que seus métodos para ser associado com ações em IB.

Por exemplo, suponha que você definir um botão e rótulo em IB. Para alterar dinamicamente o valor da etiqueta, pressionando o botão, você vai definir uma ação e propriedade em seu aplicativo semelhante a:

UILabel IBOutlet *myLabel;
-(IBAction) pushme;

Então, em IB você ligaria myLabel com o rótulo e conectar o método Pushme com o botão. Você precisa IBAction e IBOutlet para estas ligações de existir em IB.

Interface Builder usa para determinar quais os membros e as mensagens podem ser 'ligado' até os controles de interface que você está usando em sua janela / vista.

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

Uma saída é um link a partir do código de UI. Se você quer mostrar ou ocultar um elemento de 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), você tem que definir uma saída desse objeto nas fontes e link que outlet através do “objeto de interface” para o elemento de interface do usuário. Depois disso, você pode usar a saída como qualquer outra variável na sua codificação.

IBAction - um método especial desencadeada por objetos de interface do usuário. Interface Builder reconhece-los.

@interface Controller
{
  IBOutlet id textField; // links to TextField UI object
}

- (IBAction)doAction:(id)sender; // e.g. called when button pushed

Para mais informações por favor consulte a Apple Docs

Ran no diagrama enquanto olha para valores-chave de codificação, pensei que poderia ajudar alguém. Ela ajuda com a compreensão do que IBOutlet é.

Ao olhar para o fluxo, pode-se ver que IBOutlets estão lá apenas para coincidir com o nome da propriedade com um nome do controle no arquivo Nib.

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

IBAction e IBOutlets são usados ??para conectar sua interface feita na Interface Builder com seu controlador. Se você não usar Interface Builder e construir sua interface totalmente em código, você poderia fazer um programa sem usá-los. Mas, na realidade a maioria de nós usar Interface Builder, uma vez que você deseja obter alguma interatividade indo em sua interface, você terá que usar IBActions e IBOutlets.

quando você usar Interface Builder, você pode usar Conexões Inspector para configurar os eventos com manipuladores de eventos, os manipuladores de eventos devem ser as funções que têm a IBAction modificador. Uma visão pode ser ligada com a referência para o mesmo tipo e com o modificador IBOutlet.

IBOutlet

  • É um propriedade .
  • Quando o arquivo nib (IB) é carregado, ele torna-se parte de dados encapsulados que se conecta a uma variável de instância.
  • Cada conexão é unarchived e restabelecida.

IBAction

  • Atributo indica que o método é uma ação que você pode se conectar a partir do storyboard no Interface Builder.

@ - padrão dinâmico IB - Interface Builder

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