IBOutlet e IBAction
-
10-07-2019 - |
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?
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
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