Desenvolvendo no iPhone (5): nosso primeiro aplicativo (III)

En nosso artigo anterior Incluímos um Label, um TextField e um Button na interface de nosso aplicativo. Queríamos que o conteúdo do Label fosse atualizado com o que foi inserido no TextField ao clicar no Botão. Tínhamos (etapa 1) criado o projeto e (etapa 2) usado o InterfaceBuilder para definir a tela. Agora continuaremos com o restante das etapas para deixar o aplicativo funcionando.

Etapa 3. Crie variáveis ​​no ViewController.

Temos nossa interface correta. Na verdade, se fizéssemos Build & Go, poderíamos ver como estamos nos saindo:

Mas obviamente nada acontece ao pressionar o botão, porque não fizemos os desenvolvimentos essenciais mínimos. Neste passo 3 vamos apresentar as variáveis ​​e métodos do HelloWorldViewController, tanto na interface (arquivo .h) quanto na implementação (arquivo .m). Para fazer isso, como indicamos no final do post anterior, temos que saber que o TextField corresponde a uma classe UITextField, e o Label a uma classe UILabel. Essas 2 classes estão dentro da estrutura UIKit.

Se não fechamos e salvamos o Interface Builder, fazemos isso e no XCode abrimos o arquivo HelloWorldViewController.h. O código agora terá algo assim:

Já estamos olhando para alguns Objective-C. Neste código, vemos uma declaração de importação da biblioteca UIKit, onde estão as classes UILabel e UITextField. Vemos como a interface é declarada e que ela se estende do UIViewController genérico do UIKit.

No código da interface, incluímos o seguinte código:

Agora podemos explicar o que fizemos:

  • Declaramos no bloco @interface 2 atributos do tipo UILabel e UITextField, com 2 nomes de variáveis ​​* label e * textField respectivamente. À frente aparece o IBOutlet. O que é tudo isso? Nós nos explicamos. IBOutlet não é um tipo de variável; é uma diretiva que ajuda o Interface Builder a saber a existência dessas variáveis ​​do tipo UILabel e UITextField. A propósito, lembre-se que no artigo anterior nós lhe demos um truque para conhecer os tipos de variáveis ​​dos objetos de controle (botões, rótulo, campo de texto, etc.) no Interface Builder. Por outro lado, a questão de * na frente do nome da variável pode surpreender os programadores Java, não tanto os de C ... mas aprenda que é assim que você escreverá variáveis ​​de instância em Objective-C.
  • As propriedades UILabel e UITextField são declaradas. não atômico e reter não veremos por enquanto, está relacionado ao gerenciamento de memória.
  • Vemos que declaramos um método, updateText. Ele tem um sinal - na frente dele, indicando que é um método de instância, e não um método de classe (um sinal + é explicado para eles). Não podemos explicar isso porque esta é uma programação orientada a objetos básica ... Esse método não retorna nada (ou seja, void) e recebe um parâmetro do tipo id. Basicamente, refere-se ao identificador do objeto que causará a chamada ao nosso método updateTexto, que atualizará o valor do rótulo. Podemos adivinhar, já que esse controle será o próprio botão ...

Uma vez feito isso, concluímos a etapa 3.


Etapa 4. Vincule os controles de visualização às variáveis ​​do controlador.

Se revisarmos, por um lado desenvolvemos nossa interface com Interface Builder, e por outro temos as variáveis ​​relacionadas a esses controles no HelloWorldViewController.h (interface da classe do controlador HelloWorldViewController.m). Porém, ainda não há relação entre a view e o controlador, ou seja, não demos nenhuma instrução para relacionar, por exemplo, o campo de texto que projetamos no Interface Builder com a variável do tipo UITextField que colocamos no classe. Agora vamos fazer essa tarefa. Abrimos o Interface Builder novamente clicando em HelloWorldViewController.xib, clica na caixa de texto e na paleta Inspector vamos para a segunda aba (Text Field Connections). Vemos que existe uma seção chamada Referencing Outlets, sem que haja nada marcado. Isso significa que no momento o Interface Builder não conhece nenhuma relação entre este campo de texto e um IBOutlet (Interface Builder Outlet) de uma classe ... mas temos um UITextField IBOutlet em nosso HelloWorldViewController, então vamos vinculá-lo.

Para fazer isso, como podemos ver na figura, clicando no pequeno círculo ao lado de «New Referencing Outlet», arrastamos para o File's Owner da janela chamada HelloWorldViewController.xib. Ele nos permitirá escolher 2 opções, view (a visão completa) e textField (nossa variável). Obviamente, escolhemos textField e, portanto, relacionamos nossa caixa de texto à variável de seu tipo UITextField. A propósito, o File'sOwner ou proprietário do arquivo não é nem mais nem menos que nossa classe de controlador ...

Repetimos a operação com o rótulo, relacionando-o ao nosso rótulo de variável do controlador. E com o botão, é algo diferente. Neste caso, vamos relacioná-lo à nossa operação updateTexto, mas para um evento específico. Faça isso com o evento 'Touch Up Inside' e escolha nosso método updateTexto:

E desta forma já relacionamos os controles que definimos com o Interface Builder e as variáveis ​​que colocamos no controlador. Fechamos o Interface Builder salvando tudo e vamos para a última etapa voltando ao XCode.

Etapa 5. Últimos desenvolvimentos.

No XCode abrimos o HelloWorldViewController.my e colocamos o seguinte código para que nossa classe se pareça com isto:

Se olharmos de perto colocamos simplesmente o bloco @synthesize, e a implementação do método declarado na interface .h, updateTexto. Abaixo desse código, você terá muitos códigos comentados.

A linha @synthesize faz algo semelhante a gerar o getter / setter típico (acessores / mutadores) típico em linguagens OO (encapsulamento). Precisamos deles para que o controlador chegue ao conteúdo, por exemplo, da caixa de texto.

O método updateTexto, como você pode ver, simplesmente atualiza o texto de nossa etiqueta com o conteúdo do campo de texto. Acabamos.

Agora, simplesmente fazemos Build & Go, e você verá que ao inserir uma string de texto e clicar no botão, o conteúdo do rótulo é atualizado. No próximo artigo, apresentaremos melhorias em nosso aplicativo.


Siga-nos no Google Notícias

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   Peter dito

    Tutorial muito bom, muito claro e simples.

  2.   rubdotto. com dito

    Bem, eu devo ser muito melão 🙁 porque não funciona para mim. Eu capturei o valor em uma String e ele pega o texto, mas não o atribui ao rótulo, pelo menos não o pinta, porque eu tento ver o label.text e ele me diz fora do escopo ...

  3.   leo2279 dito

    Excelentes seus tutoriais, realmente explica muito bem esse desenvolvimento para iphone, espero que continuem publicando mais tutoriais.

    lembranças

  4.   Mariano dito

    Oi, tudo bem, mas não funciona. Para fazer funcionar, tive que vincular a visão do construtor de interface com a visão no cubo, como você ensina a fazer com o campo de texto e o rótulo. De resto, muito obrigado.