Por que editar o arquivo Main.storyboard?
O motivo pelo qual, neste ponto, é necessário editar o arquivo
Main.storyboard, se deve ao fato que ele é a forma padrão pela qual
o Xcode cria projetos do tipo Single View Application (além de al-
guns outros), sendo o ponto de partida da app. Esta é também uma
forma da Apple estimular o uso de Storyboards em detrimento do an-
tigo formato que se baseada apenas em arquivos .xib. Somado a
isso, você deve se lembrar que todo novo projeto também inicia com
a classe ViewController, que anteriormente renomeamos para
RootController, e esta mesma classe também está configurada como
sendo a primeira que o aplicativo deverá utilizar, quando o aplicativo for
iniciado.
No capítulo 5 veremos mais a fundo este assunto.
4.5
Conectar as ações dos botões
Da mesma forma como já fizemos diversas outras vezes durante o livro, para que
os botões tenham utilidade é necessário conectar as ações deles ao código, utili-
zando a já conhecida abordagem Selecionar componente -> Arrastar com CTRL
para o arquivo .h -> Connection do tipo Action. Mais fácil que devorar o bolo de
chocolate da vovó. Chame a ação do botão Adicionar de abrirAdicionar, e
para segundo botão nomeie a ação de abrirConfiguracoes. O seu arquivo
RootController.h deverá ficar assim:
# import <UIKit / UIKit.h>
@interface RootController : UIViewController
- (IBAction)abrirAdicionar:(id)sender;
- (IBAction)abrirConfiguracoes:(id)sender;
@end
4.6
Criar a tela de Adicionar Empresa
Adicione uma nova classe ( Command + N) chamada AdicionarController da
mesma forma como criamos o RootController, lembrando de selecionar a opção
65
4.7. Navegar de um controlador para outro
Casa do Código
para criar o arquivo .xib, e adicione apenas um label com o texto Tela adicionar
empresa no arquivo AdicionarController.xib. Lembre-se que o objetivo é
focar na
navegação entre os controladores, e não na funcionalidade de adicionar
empresas propriamente dita.
4.7
Navegar de um controlador para outro
A
classe
UIViewController
contém
uma
propriedade
cha-
mada
navigationController
que
representa
a
instância
do
UINavigationController utilizada pelo aplicativo, sendo que os princi-
pais métodos são dois:
pushViewController:animated, para navegar para um outro controla-
dor
popViewControllerAnimated, para voltar um nível na hierarquia.
Para ir do RootController para a tela de adicionar empresa, implemente o
método abrirAdicionar no arquivo RootController.m da seguinte forma
(obs: lembre-se de importar o arquivo AdicionarController.h):
- (IBAction)abrirAdicionar:(id)sender {
AdicionarController *c = [[AdicionarController alloc] init];
[self.navigationController pushViewController:c animated:YES];
}
Rode o aplicativo ( Command+R) e interaja com o botão Adicionar. Acon-
teceu alguma coisa?
Muito provavelmente não, pois apesar da propriedade
navigationController fazer parte da API da classe UIViewController, o va-
lor dela não é criado automaticamente pelo iOS. Portanto, é nossa responsabilidade
disponibilizar um UINavigationController e instruir o aplicativo a utilizá-lo.
4.8
Associar um UINavigationController ao pro-
jeto
Conceitualmente um UINavigationController não deve ser estendido, mas
sim ser utilizado diretamente. Imagine o navigation controller como sendo um ge-
renciador, que recebe uma referência para o controlador inicial, e a partir dai permite
a navegação para os outros através do método pushViewController:animated.
66
Casa do Código
Capítulo 4. Coordenando o trabalho com controladores
A propriedade navigationController da classe UIViewController é
vazia em controllers que não façam parte da hierarquia de um navigation control-
ler (o que faz bastante sentido). Porém, a partir do momento em que criamos um
UINavigationController, o iOS atribui automaticamente um valor válido para
a propriedade do controlador principal e de todos os outros que fizerem parte da
navegação. Isso é bastante prático, pois não precisamos nos preocupar em manter
uma referência global ao navigation controller e atribuí-lo manualmente aos demais.
Para adicionar um navigation controller ao projeto,
abra o arquivo
Main.storyboard e selecione a barra preta na parte inferior, conforme
mostra a imagem 4.7, e em seguida acesse o menu Editor -> Embed In
-> Navigation Controller. O resultado ficará como o da imagem 4.8.
Figura 4.7: Clique na barra para selecionar o controlador
67
4.9. Criar os demais controladores
Casa do Código
Figura 4.8: Navigation Controller associado ao projeto
Rode novamente o aplicativo e interaja com o botão Adicionar, e veja que desta
vez a tela do AdicionarController é exibida corretamente. Uma outra coisa
nova é que o aplicativo apresenta uma barra superior de navegação chamada de
Navigation Bar , onde um botão com o título Back aparece no canto supe-
rior esquerdo quando navegamos de um lugar para o outro. Tecnicamente funciona
desta maneira: ao executarmos pushViewController:animated, o iOS usará o