sábado, 16 de novembro de 2013

A conversa entre a View e o Controller

Conforme escrevemos no último post, o Controller pode conversar com a View sem restrições. Isto pode ser visto pela figura abaixo:


Pelo que podemos perceber, existe um componente de ligação, que no iOS é chamado de Outlet. Uma grande parte dos componentes visuais é conectado ao Controller dessa forma. Na verdade, todos os componentes que precisam de interação devem ser "lindados" dessa forma.
Imagine o seguinte: você tem um formulário para entrada de dados onde cada campo tem um label fixo. A pergunta é: preciso ligar esses labels ao Controller? Não! Eles não precisam de interação já que são fixos. Entretanto, os componentes de entrada de dados (chamados Text Field no iOS) provavelmente serão linkados, uma vez que será necessário obter o que foi digitado pelo usuário. Sendo assim, terá que ser criado um outlet para cada componente que se deseja manipular no Controller.

Outra forma de comunicação entre o Controller e a View é quando preciso que uma interação feita pelo usuário "dispare" algum evento. Isto é feito definindo ações (Action) em componentes da View e indicando qual evento (método) vai ser realizado no Controller quando a interação for feita.
Um exemplo muito comum é colocar um botão (Button no iOS) que vai chamar um método no Controller. Uma View de login é um exemplo típico. Ela vai ter um botão que vai disparar um método do Controller que vai validar o usuário e a senha que foram digitados.


Outra forma de comunicação entre o Controller e a View é quando, por exemplo, a View precisa ser sincronizada quando "algo" aconteceu, mesmo sem ter tido interação com usuário. Por exemplo, a página foi carregada. Neste caso, o iOS usa o padrão de projeto delegate para definir a comunicação. Sendo assim, métodos são criados no Controller e linkados com os eventos da View.





Exemplo de comunicação com delegate. Este código está no Controller e será disparado quando (1) a página foi carregada e (2) quando receber um aviso de pouca memória.

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];

}

Agora que já vimos a forma de comunicação entre o Controller e a View, podemos mostrar como linkar os componentes visuais ao código. Mas isso vai ficar para o próximo post.

Até lá...



Nenhum comentário:

Postar um comentário