Archive for março, 2010

Apostila iPhone - Relacionando Ações: XCode x IB

sábado, março 27th, 2010

Volte para o IB, dando um duplo click em cima do arquivo MainView.xib.

Por que precisamos voltar neste arquivo? Porque é necessário criar o relacionamento dos botões e das ações agora criadas. O relacionamento dos botões não vou explicar novamente, vocês já estão cansados de fazer isso, portanto mãos à obra.

As ações também já foram mostrada como se faz, mas vamos dar uma breve relembrada. Dê um click pressionando o botão control em cima do botão Nova (que está na Main View), isto fará uma janela pop-up ser exibida, visualize a opção Touch Down, do lado direito tem um circulo, click e arraste até o File’s Owner, irá aparecer outra janela pop-up, lá estará disponível o método showNew, dê um click em cima desde método. Agora faça o mesmo para o botão Main (que está na NewView), só que escolha o método hideNew.

figura-39Exercício

  1. Ainda utilizando o projeto iPhoneHello, crie mais 2 views e seus respectivos botões que permitam a exibicão destas views.

(by Ademar Varela)


iPad - Sim ele existe

terça-feira, março 23rd, 2010

Depois de vários meses de especulações, boatos, divagações e premonições, eis que o nosso guru master lança mais um dos seus brinquedinhos. E que brinquedinho! Muitos vão falar que ainda falta a câmera, possibilidade de trocar bateria, não roda Flash, e que o negócio é caro. Tá, aviso que inveja também mata!

Assim que saiu o iPad, entrei no portal de desenvolvedores e baixei o SDK 3.2 (ainda na versão beta) e já mexi com algumas funcionalidades disponibilizadas para o iPad. Fiquei satisfeito com o que vi, pois foi mantida toda compatibilidade com o desenvolvimento para iPhone.

Vejamos alguns pontos que sofreram mudanças:

    • A tela de abertura do XCode mudou, agora quando vamos abrir um novo projeto temos um template especialmente desenvolvido para o iPad, o Split View-based Application.

figura-01

    • Isto não quer dizer que só temos esta possibilidade. Nas opções OpenGL ES Application, Tab Bar Application, View-based Application e Window-based Application também temos a opção de escolher entre iPhone e iPad.

figura-02

    • Outra modificação é no momento que estamos criando um arquivo do tipo XIB (que cuida das views de uma aplicação). Temos agora a possibilidade de criar um XIB próprio para o iPad

figura-03

Vocês devem estar se perguntando, mas se o iPad não foi lançado no mercado, como eu vou testar as minhas aplicações? Simples, assim como no iPhone, já temos o simulador para o iPad. Bom, no simulador do iPad eu vi algumas mancadas da Apple. Reparem na figura, que o título do simulador está como iPhone Simulator e não iPad Simulator, claro nada que comprometa o que realmente interessa, que é testar a sua aplicação, mas o esmero pelo lançamento do iPad foi tamanho, que esperava que este pequeno detalhe não fosse passar desapercebido.

figura-04

Enfim, gostei do que vi, e espero que a Anatel não enrosce em sua burocracia para liberar o iPad aqui no Brasil, e que a Apple consiga traze-lo por um preço acessível.

(by Ademar Varela)


Apostila iPhone - Views

domingo, março 21st, 2010

A principal regra para o desenvolvimento para iPhone é: Uma janela e muitas views. Se você manter isto em mente, desenvolver a interface gráfica é muito simples. No SDK 3.0 este conceito é bem marcante. Como já foi dito anteriormente, toda interface é desenvolvida usando o IB. Observando nossa aplicação iPhoneHello, na pasta Resource existem 3 arquivos com extensão .xib. FlipsideView, MainView e MainWindow. Internamente, é a MainWindow que controla a exibição das views que no caso são a FlipsideView e a MainView. Você pode colocar várias views dentro de um mesmo arquivo de view. O que isto quer dizer? Dentro do MainView, por exemplo, nós podemos ter mais de uma view, e podemos navegar por elas. Outra maneira de termos mais views é criarmos classes separadas para elas, como foi feito para o FlipsideView e o MainView. Particularmente, prefiro criar várias views dentro de um único arquivo.

Criando uma view no IB

Para criar uma view, vamos até o IB. Para isso dê um duplo click no arquivo MainView.xib.

figura-31

Na janela Library, selecione Windows, Views & Bars. Arraste o componente View para dentro da janela MainView.xib. Fazendo isto você já terá inserido uma nova view dentro do formulário MainView.xib.

Após ter feito esta operação, convém batizarmos esta nova view, para que seja mais compreensivo nossa tarefa de programar. Vamos chamar esta nova view de NewView. Para isso de um duplo click em cima da nova view, isto fará com que esta view seja aberta, vá até o Inspector, selecione a opção Identity e no item Name (que deve estar vazio) digite NewView.

figura-32

Após ter feito esta operação, arraste o componente label para esta nova view, e altere o texto dele para “Nova View”. Estamos fazendo isso, apenas para ter uma referência visual quando executarmos esta nova view.

Depois de criado, feche o IB, salve as modificações e retorne para o XCode.

Vamos tratar as views como componentes, até porque de fato são componentes, logo temos que declarar da mesma forma que declaramos o label e o botão anteriormente criados. Como criamos esta nova view dentro da MainView, iremos controlar o seu funcionamento dentro da MainViewController (da mesma forma que controlamos o label e o botão).

Declarando uma view no XCode

Vamos até o arquivo MainViewController.h e acrescente o seguinte código:

IBOutlet UIView *mainView;

IBOutlet UIView *newView;

e

@property (nonatomic, retain) UIView *mainView;

@property (nonatomic, retain) UIView *newView;

Você deve estar perguntando. Mas nós criamos somente uma view (newView), por que estamos declarando duas? A resposta é a seguinte, para manipular a newView, vamos precisar ter uma view de referência. A exibição ou não da newView, sempre terá como referência a mainView. O código na MainViewController.h, deverá ficar assim:

figura-33Da mesmo forma que fizemos para um label e para um botão, vamos inserir as seguintes linhas na MainViewController.m:

@synthesize mainView;

@synthesize newView;

O código na MainViewController.m ficará desta forma:

figura-34Compile o código para garantir que fizemos tudo certo.

Vamos voltar para o IB, dê um duplo click no arquivo MainView.xib.

Relacionando views entre o XCode e IB

Assim como fizemos com o label e o botão, precisamos informar para o IB que declaramos duas views, e precisamos criar o relacionamento entre as views do XCode e as views do IB.

Vamos fazer o mesmo procedimento, vamos dar um click pressionando o botão control em cima do controller File’s Owner. Isto fará com que uma janela pop-up seja aberta e possamos visualizar as views mainView e newView. Da mesma forma que relacionamos o label e o botão faremos o mesmo com as views, vamos até o circulo do lado direito da mainView, clicamos e arrastamos até a view chamada Main View. Vamos fazer o mesmo procedimento para newView, só que vamos arrastar para NewView.

figura-35

Terminado o relacionamento, vamos aproveitar que já estamos no IB e vamos criar um botão na Main View e um botão na NewView. Arraste um componente UIButton para cada uma das views.

No botão criado na Main View, coloque o texto “Nova” e no botão da NewView, coloque o texto “Main”, conforme a figura abaixo:

figura-36

Por que criamos estes dois botões? Porque será através deles que vamos trocar a exibição de views. Quando o usuário pressionar o botão Nova, a aplicação irá para a NewView e quando o usuário pressionar Main, a aplicação irá retornar para Main View. Claro que para isso vamos precisar declarar estes botões no XCode também e depois criar o relacionamento entre o XCode e IB.

Feche o IB e salve suas modificações.

Criando ações para manipular as Views

No arquivo MainViewController.h (sim, ainda estamos manipulando o MainView) insira as seguintes linhas:

IBOutlet UIButton *btnNew;

IBOutlet UIButton *btnMain;

@property (nonatomic, retain) UIButton *btnNew;

@property (nonatomic, retain) UIButton *btnMain;

-(IBAction)showNew:(id)sender;

-(IBAction)hideNew:(id)sender;

O código ficará desta forma:

figura-37

Com este código, já estamos declarando os botões que vamos utilizar e também estamos montando as assinaturas dos métodos que vamos usar para fazer a troca de views. Na verdade, com o método showNew, iremos exibir a newView e com hideNew iremos ocultar newView. Quando ocultarmos newView a MainView ficará exposta mais uma vez. Ou seja, sempre teremos Main View exposta.

Agora vamos inserir as seguintes linhas na MainViewController.m:

@synthesize btnNew;

@synthesize btnMain;

- (IBAction)showNew:(id)sender {

[mainView addSubview:newView];

}

- (IBAction)hideNew:(id)sender {

[newView removeFromSuperview];

}

O código ficará da seguinte forma:

figura-38Vamos observar o código digitado no método showNew:

[mainView addSubView:newView];

Quando colocamos um comando entre colchetes, estamos encapsulando todas as ações que desejamos de uma única vez, neste caso temos somente a ação de addSubView em cima da mainView. Como o bom senso já deve ter percebido, estamos inserindo uma view (a newView) em cima da mainView. Esta ação fará com que newView sobreponha a mainView.

Agora vamos observar o código da hideNew:

[newView removeFromSuperview];

Neste momento nós vamos desfazer o comando anteriormente descrito, ou seja, vamos retirar a newView de cima da mainView, isto fará com que a mainView volte a ficar visível para o usuário.

Compile o projeto para se certificar que tudo foi digitado corretamente.

(by Ademar Varela)

Apostila iPhone - @synthesize

domingo, março 14th, 2010

Para reforçar o que acabamos de ver, faça os mesmos procedimentos do @property para chegar na documentação do @synthesize.

figura-30

De uma maneira mais simplista, usamos o @synthesize como forma de inicializar uma varíavel, existem outras formas de inicialização de uma variável, como por exemplo @dynamic. Veremos mais a frente esta forma de inicialização.

(by Ademar Varela)


Apostila iPhone - @property

sexta-feira, março 5th, 2010

Este tópico é intimamente ligado ao ObjC, por isto vamos aprender usar o help que já é fornecido pela própria Apple. Acesse o site:

http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/

ObjCRuntimeGuide/Articles/ocrtPropertyIntrospection.html#//apple_ref/doc/uid/TP40008048-CH101-SW5

Agora como chegamos neste link imenso? Bem fácil. Vá até a declaração @property e de um duplo click, isto fará com que fique selecionada. Após a seleção, dê um click pressionando o botão control e irá aparecer uma janela pop-up.

figura-273

Na janela pop-up que abriu selecione “Find Selected Text in Documentation”.

Selecionando esta opção, você tem acesso a própria documentação da linguagem fornecida pela Apple.

figura-282

Esta é a página de Help, nela encontramos várias referências ao texto selecionado, no caso agora, estamos procurando @property. Tenham sempre preferência ao item apresentado na primeira linha, que é Objective-C 2.0 Runtime Programming Guide. Este documento é uma das principais referências para quem quer aprender mais a fundo ObjC.

Ao clicar neste item você irá direto para um link que contém toda uma explicação, com exemplos que como vai funcionar a instrução que você está pesquisando, no caso @property.

figura-292

Agora é só estudar o que faz a instrução.

De uma maneira mais simplista, @property informa as propriedades que uma variável irá ter. Por exemlo, se ela será somente readonly (somente para leitura), copy, retain, nonatomic. Cada definição está explicada no iPhone Reference Library;

(by Ademar Varela)