das.
Controladores (do inglês controllers) são classes normais, e portanto podem
conter qualquer tipo de lógica e regra de negócios, embora ao menos teorica-
mente o ideal é que sejam usados como um intermediário, como um facilitador
de trabalho entre a camada visual (as views) e a lógica de negócios. Na prática, mui-
tos desenvolvedores acabam misturando as coisas em um único lugar, o que pode
levar a dificuldades para manter e evoluir o aplicativo a longo prazo.
Casa do Código
O código-fonte deste capítulo está disponível nas pastas ViewControllerAni-
mations e NavigationControllerDemo (lembrando que o endereço do site com os
códigos está na introdução do livro).
O objetivo deste capítulo é mostrar diferentes maneiras de interagir entre View
Controllers, que são as classes responsáveis por coordenar o trabalho em aplica-
ções iOS, tais como redimensionamento de views, eventos de rotação do dispositivo
e navegação entre as diversas partes do aplicativo. A figura 4.1 mostra o papel de um
controlador frente a diversas outras partes de um aplicativo.
Figura 4.1: Papel do controlador. Fonte: Apple
Controladores por si só não são componentes
visuais. Pense neles como um es-
queleto, que embora não possa ser visto, é vital para que tudo se encaixe. A interface
com o usuário é feita através de views, tanto que ele tem a sua própria propriedade
chamada view.
52
Casa do Código
Capítulo 4. Coordenando o trabalho com controladores
Controladores e Storyboards
Todo o conteúdo apresentado neste capítulo é fundamental para o
correto entendimento de um dos principais pilares de aplicações iOS, e
tem direta ligação com o conteúdo do próximo capítulo, 5.
4.1
Passando de um controlador para outro
Existem diversas formas de fazer a transição entre controladores, como apresentá-
los de forma modal, ou então utilizando um navegador especializado. Veremos essas
duas abordagens neste capítulo.
Controladores do tipo Modal funcionam da mesma maneira como janelas mo-
dais em aplicativos desktop, que é aquele comportamento no qual, quando um com-
ponente desses é apresentado, nada do componente anterior pode ser acessado en-
quanto este não for fechado.
Crie um novo projeto do tipo Single View Application (File -> New -> Pro-
ject -> Single View Application) chamado ViewControllerAnimations e
selecione iPhone como Device. O Xcode irá criar um projeto com os arquivos
AppDelegate.m e .h, e outra classe chamada ViewController.m e .h, além
do arquivo Main.storyboard.
Abra o arquivo Main.storyboard, e adicione quatro componentes do tipo
Button, com os textos Dissolver, Virar página, Subir vertical e Girar horizontal
estas serão as operações que realizaremos.
53
4.1. Passando de um controlador para outro
Casa do Código
Figura 4.2: Localização do Round Rect Button, no Xcode
A tela deverá ficar como a da figura 4.3.
54
Casa do Código
Capítulo 4. Coordenando o trabalho com controladores
Figura 4.3: Tela com os botões posicionados
O próximo passo é conectar as ações destes botões. Abra o Assistant Editor (
View -> Assistant Editor -> Show Assistant Editor, ou Option +
Command + Enter), e conecte uma ação para cada um dos botões no arquivo
ViewController.h, da seguinte forma:
Texto: Dissolver, nome do método: showDissolve
Texto: Virar página, método: showPageCurl
Texto: Subir vertical, método: showVertical
Texto: Girar horizontal, método: showHorizontal
O código do arquivo ViewController.h deverá estar como mostrado abaixo:
55
4.1. Passando de um controlador para outro
Casa do Código
# import <UIKit / UIKit.h>
@interface ViewController : UIViewController
- (IBAction)showDissolve:(id)sender;
- (IBAction)showPageCurl:(id)sender;
- (IBAction)showVertical:(id)sender;
- (IBAction)showHorizontal:(id)sender;
@end
Cada um dos métodos que iremos implementar terá como tarefa mostrar ou-
tro controlador ao usuário, sobrepondo o principal temporariamente. A forma que
veremos é uma das várias possíveis maneiras, e mais adiante será mostrado como
utilizar a classe UINavigationController para fazer a navegação entre eles de
maneira organizada e gerenciável.
Para que os botões possam abrir um novo controlador é necessário primeiro criá-
los. Para tanto, acesse o menu File -> New -> File... e selecione o template
Objective-C class, e clique no botão Next. Na próxima tela devemos informar o nome
da classe a ser criada, e qual será a classe pai. Chame-a de OpcoesController, e em
Subclass of selecione a opção UIViewController. Marque também o checkbox
With XIB for user interface, conforme mostrado na figura 4.4.
56
Casa do Código
Capítulo 4. Coordenando o trabalho com controladores
Figura 4.4: Criando o controlador para a tela de opções
Quando o Xcode perguntar onde o arquivo deverá ser salvo, selecione a pasta
raiz do projeto, no mesmo lugar onde estão os outros arquivos. Você deverá ter o
arquivo OpcoesController nas extensões .h, .m e .xib.
Reparem bem que todos os arquivos têm o mesmo nome, mudando a extensão.