Não consegui seguir o exemplo em http://www.iphonesdkarticles.com/2008/07/first-iphone-application.html. A aplicação compila, executa, mas nada acontece ao se pressionar o botão. Acabei por encontrar um outro caminho para realizar a mesma aplicação. Seguirei em parte o roteiro do exemplo original, com algumas simplificações.
Com o iPhone SDK e o XCode instalados, basta seguir as instruções abaixo. Este texto ainda não está concluído e será elaborado em etapas.
Encontrando a primeira ferramenta: XCode
Demorei um pouco para encontrar o XCode. As ferramentas de desenvolvimento não ficam junto com as demais aplicações. Tudo que está relacionado com o desenvolvimento fica em /Developer. O aplicativo pode estar em outra pasta, dependendo dos parâmetros da instalação no seu computador.
- Local de instalação do XCode
A aplicação “Hello Universe”
O aplicação HelloUniverse permite informar nome e sobrenome e apertar um botão para ver uma mensagem. A mensagem apresenta uma saudação parecida com “Marco Mangan says Hello Universe!”. Com este exemplo são apresentadas três ferramentas (XCode, Interface Builder e iPhone Simulator) e também a utilização de controles e de respostas a eventos.
A tela da aplicação será assim:
- A aplicação Hello Universe
Criando um novo projeto no XCode
Nas primeiras execuções do XCode, fechei a janela de diálogo inicial Welcome to XCode. Um dia voltarei para estudar a janela 🙂 Selecione o menu File -> New Project… -> IPhone OS Application, escolha o modelo View-based Application e aperte o botão Choose…
- O modelo utilizado: aplicação com base em visão
Selecione uma pasta e salve o projeto com o nome HelloUniverse. Diversos arquivos e referências são gerados de acordo com o modelo:
A aplicação conta com duas classes: um delegador de aplicação (HelloUniverseAppDelegate) e um controlador de visão (HelloUniverseViewControler). Foi gerado também um recurso que representa a visão da interface gráfica (HelloUniverseViewController.xib em Resources). Cada classe apresenta dois arquivos: o cabeçalho (.h) e a implementação (.m).
Construindo interfaces com a segunda ferramenta: Interface Builder
O construtor de interfaces (interface builder) permite editar os recursos que representam as visões da aplicação. Clique no arquivo HelloUniverseViewController.xib para ativar o construtor de interfaces. O exemplo tem uma única visão. Para editar os atributos da visão ou de seus componentes, use o inspetor de atributos no menu Tools -> Attributes Inspector. Por exemplo, troque a cor de fundo da visão.
Agregando componentes à visão
Para encontrar os componentes disponíveis, consulte a biblioteca, no menu Tools -> Library. Os componentes que utilizaremos estão em Cocoa Touch – Inputs and Values.
Os quatro componentes da visão são: dois campos de texto (textefields), um botão arredondado (rounded button) e um rótulo (label). Para um acabamento altere as dimensões e posição dos controles e os valores de algumas de suas propriedades. Para os campos de texto, foram alterados os marcadores (place holders), a opção de remover o texto quando a edição inicia (clear when editing begins) e a resposta ao pressionamento da tecla Entra (Return). Então, os atributos ficam, respectivamente, placeholders: First Name e Last Name, Clear When Editing Begins: desmarcado e Return Key fica em Next:
Altere o título (Title) do botão para Click Me. Aumente a largura do rótulo para poder ler a mensagem e apague o texto (Text). Para simular a interface use a opção File -> Simulate Interface.
Criando um controlador de visão no XCode
Edite o código fonte do controlador de interface e acrescente atributos e métodos:
// HelloUniverseViewController.h
#import
@interface HelloUniverseViewController : UIViewController {
IBOutlet UITextField *txtFirstName;
IBOutlet UITextField *txtLastName;
IBOutlet UILabel *lblMessage;
}
- (IBAction) btnClickMe_Clicked:(id)sender;
@end
Para implementar o controlador, basta alterar o método de desalocação e acrescentar o método que responderá ao pressionamento do botão arredondado. Altere apenas o dealloc, que deve liberar os recursos que foram alocados pela implementação:
// HelloUniverseViewController.m
#import "HelloUniverseViewController.h"
@implementation HelloUniverseViewController
// deixe o código daqui para cima como está...
- (void)dealloc {
[txtFirstName release];
[txtLastName release];
[lblMessage release];
[super dealloc];
}
- (IBAction) btnClickMe_Clicked:(id)sender {
NSString *FirstName = txtFirstName.text;
NSString *LastName = txtLastName.text;
NSString *Message = nil;
if([FirstName length] == 0 && [LastName length] == 0)
Message = [[NSString alloc] initWithFormat:@"Anonymous says Hello Universe!!!"];
else if ([FirstName length] > 0 && [LastName length] ==0)
Message = [[NSString alloc] initWithFormat:@"%@ says Hello Universe", FirstName];
else if ([FirstName length] == 0 && [LastName length] > 0)
Message = [[NSString alloc] initWithFormat:@"%@ says Hello Universe", LastName];
else
Message = [[NSString alloc] initWithFormat:@"%@ %@ says Hello Universe", FirstName, LastName];
lblMessage.text = Message;
[Message release];
}
@end
Compile o código e inspecione as tomadas do construtor de interfaces (interface builder outlets) do proprietário (file’s owner) e do atendente (first responder) no construtor de interface.
Conectando variáveis de instância aos objetos na visão
Para realizar as conexões, basta utilizar o construtor de interface e realizar as conexões pelo inspetor de conexões (Tools -> Connections Inspector):
Respondendo a eventos
Conecte o último elemento, ligando o evento de liberar toque interno do botão com o novo método do atendente.
Salve os arquivos e execute a aplicação no simulador.
Conclusão
As principais diferenças deste roteiro em relação ao exemplo original são a omissão de detalhes e o uso de um modelo de projeto que já possui uma visão associada. Após a conclusão deste exemplo, fica mais fácil seguir roteiros mais complexos: MoveMe.