de uma determinada tela, e a conexão com o código-fonte deve ser feita manual-
mente. Existem duas formas distintas de fazer isso:
1) Usando o mini-wizard do Xcode, que faz todo o trabalho pesado (já utilizada
em capítulos anteriores)
2) Da forma tradicional (como era até o Xcode 3)
99
6.3. Conectando os componentes com o código
Casa do Código
Dependendo do tamanho do seu monitor, a quantidade de painéis abertos no
Xcode pode tornar a tela bastante poluída, portanto pessoalmente costumo fazer o
seguinte:
Abra o Assitant Editor (View -> Assistant Editor -> Show Assistant Editor)
Feche o painel Navigator (View -> Navigators -> Hide Navigator)
Abra o painel Utilities (View -> Utilities -> Show Utilities)
Lembrando que esta é apenas uma configuração sugerida, porém você deve tra-
balhar da maneira que achar mais produtivo e confortável. Contudo, para as expli-
cações abaixo assume-se que a configuração de telas sugerida é a que estará sendo
utilizada.
A primeira maneira já vimos como fazer nos capítulos anteriores, que é aquela
onde seguramos CTRL e arrastamos uma linha do componente até o arquivo .h. A
segunda maneira consiste em primeiro declarar manualmente o código relevante no
arquivo .h, para em seguida realizar as conexões.
Com os arquivos Main.storyboard e ViewController.h abertos lado a
lado (veja a imagem 6.3), comece editando o arquivo ViewController.h para que
fique conforme a listagem abaixo:
1 @interface ViewController : UIViewController
2 @property (nonatomic, weak) IBOutlet UITextField *downloadField;
3 -(IBAction)startDownload:(id)sender;
4 @end
Na linha 2 declaramos o campo de texto que será usado para informar a URL
do arquivo a baixar, e na linha 5 é declarada a assinatura do método para iniciar o
download em si.
100
Casa do Código
Capítulo 6. Realizando operações com a Internet
Figura 6.3: Main.storyboard e ViewController.h lado a lado
Agora faça os seguintes passos:
Selecione o text field no arquivo Main.storyboard
Abra o painel Connections, através do menu View -> Utilities ->
Show Connections Inspector
No painel Connections, clique e arraste a bolinha New Referencing Outlet
para cima da declaração do UITextField no arquivo .h
Veja a figura 6.4 para referência.
101
6.3. Conectando os componentes com o código
Casa do Código
Figura 6.4: Passos para conectar
o Outlet ao text field
Dessa forma, conectamos a propriedade downloadField que foi declarada no
arquivo .h com o componente visual, permitindo manipulá-lo da maneira que for
necessária. Caso contrário, o text field seria apenas um artefato puramente visual,
sem qualquer utilidade.
O próximo passo é conectar a ação do botão que realiza o download. Os proce-
dimentos são muito parecidos com o de conectar o text field, com a diferença que
usaremos a IBAction. Os passos são:
Selecione o botão no arquivo Main.storyboard
No painel Connections aparecerá um grupo chamado Send Events, com uma
série de eventos possíveis que este botão pode receber. O que nos interessa é
o Touch Up Inside, que é o responsável por lidar com um toque (ou clique, se
fosse um aplicativo web ou desktop). Arraste o conector do Touch Up Inside
para cima da declaração da IBAction criada anteriormente. Se você fizer certo,
irá aparecer um box dizendo Connect Action
Veja a figura 6.5 para referência.
102
Casa do Código
Capítulo 6. Realizando operações com a Internet
Figura 6.5: Conectando a ação do botão de download
Repita
o
mesmo
procedimento
para
os
componentes
restantes:
a
barra de progresso ( UIProgressView) e o indicador de atividade (
UIActivityIndicatorView). Para a primeira, utilize o nome progressBar, e
para o segundo, loading.
Após tudo isso, o código do arquivo ViewController.h deverá estar como o
exemplo abaixo:
@interface ViewController : UIViewController
@property (nonatomic, weak) IBOutlet UITextField *downloadField;
@property (nonatomic, weak) IBOutlet UIProgressView *progressBar;
@property (nonatomic, weak) IBOutlet UIActivityIndicatorView *loading;
-(IBAction)startDownload:(id)sender;
@end
Volte
para
o
Standard
editor
(
View -> Standard Editor ->
Show Standard Editor) e abra o arquivo
ViewController.m (COM-
MAND+SHIFT+O) para implementar o corpo do método do botão de download.
Isso é necessário porque criamos a conexão dele manualmente anteriormente. Veja
no arquivo .m que o método -(IBAction)startDownload:(id)sender não
existe no arquivo. Em qualquer lugar, implemente-o desta maneira:
103
6.4. Realizar a operação de download
Casa do Código
-(IBAction)startDownload:(id)sender {
}
6.4
Realizar a operação de download
A implementação completa do método startDownload: é mostrada abaixo, e é
um pouco mais longa do que os outros códigos que vimos até agora. Contudo, apesar
do tamanho, são poucos os pontos que merecem uma explicação mais detalhada.
1 -(IBAction)startDownload:(id)sender {
2
NSURL *url = [NSURL URLWithString:_downloadField.text];
3
NSURLRequest *request = [NSURLRequest requestWithURL:url];