título do controlador anterior (representado pela propriedade title) como texto
do botão e, caso não haja nenhum título definido, o texto Back é utilizado.
4.9
Criar os demais controladores
O nosso aplicativo também precisa de uma hipotética tela de configurações aliás,
duas. A primeira delas contém algumas coisas gerais, como se o catálogo deve ser
utilizado em Modo seguro e se os dados devem ser salvos automaticamente ou
68
Casa do Código
Capítulo 4. Coordenando o trabalho com controladores
não. Além disso, precisamos dos dados de acesso do usuário. Para o primeiro caso
crie um novo controlador chamado ConfguracoesController como feito ante-
riormente, e adicione
alguns componentes para parecer que ele tem utilidade, como
exemplificado na figura 4.9.
Figura 4.9: Exemplo da tela principal de configurações
Implemente o método A B R I RCO N F I G U R A C O E S:
Não
esqueça
de
implementar
o
corpo
do
método
abrirConfiguracoes: no arquivo RootController.m, seguindo
a mesma lógica do que foi feito para o método abrirAdicionar:,
porém desta vez instanciando o ConfiguracoesController.
Além disso, esta tela deverá chamar uma outra tela, portanto conecte a ação do
botão Dados de acesso ao método abreDadosAcesso:, conforme a listagem
abaixo:
69
4.9. Criar os demais controladores
Casa do Código
// ConfiguracoesController.h
# import <UIKit / UIKit.h>
@interface ConfiguracoesController : UIViewController
- (IBAction)abreDadosAcesso:(id)sender;
@end
Para a tela de Dados de acesso, crie um novo controlador chamado DadosA-
cessoController e adicione alguns campos, conforme a figura 4.10. Para esta tela não
há necessidade de código adicional por enquanto.
Figura 4.10: Exemplo das configurações de acesso
Agora, no arquivo ConfiguracoesController.m, implemente o corpo do
método abreDadosAcesso: para que o DadosAcssoController seja aberto
quando solicitado, conforme demonstrado abaixo:
70
Casa do Código
Capítulo 4. Coordenando o trabalho com controladores
- (IBAction)abreDadosAcesso:(id)sender {
DadosAcessoController *c = [[DadosAcessoController alloc] init];
[self.navigationController pushViewController:c animated:YES];
}
Execute o aplicativo ( Command + R) e navegue entre os controladores, e veja
como o UINavigationController cuida da parte de transição entre eles. Neste
ponto deverá ser possível navegar conforme demonstrado na figura 4.11.
Figura 4.11: Estrutura da navegação
4.10
Esconder a barra superior de navegação
Certas vezes não há a necessidade de deixar a barra de navegação superior
(a Navigation Bar) do
UINavigationController visível o tempo todo,
caso ela não agregue funcionalidade, e o ideal seria escondê-la e mostrar so-
mente quando necessário.
Para obter este resultado basta executar o método
setNavigationBarHidden:animated do UINavigationController, lem-
brando que ele é representado pela propriedade navigationController. Adici-
71
4.10. Esconder a barra superior de navegação
Casa do Código
one a linha de código abaixo no método viewWillAppear:animated da classe
RootViewController, e rode novamente o aplicativo.
// RootController.m
-(void) viewWillAppear:(BOOL)animated {
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
Contudo, quando navegamos na hierarquia para outro controlador, a barra de
navegação continua escondida, impossibilitando de navegarmos para o nível an-
terior. Para solucionar este problema basta fazer o processo inverso nas classes
ConfguracoesController e AdicionarController, conforme demonstrado
abaixo:
// Nos controladores Configurações e Adicionar
-(void) viewWillAppear:(BOOL)animated {
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
Rode novamente o aplicativo (menu Product -> Run) e veja a diferença no fun-
cionamento.
72
Capítulo 5
Storyboards
Historicamente, a maneira de construir aplicações iOS consistia em criar uma série
de controladores, cada um de maneira independente do outro, e frequentemente
com arquivos .xib para a criação do layout. Como vimos no capítulo 4, ainda
é possível construir aplicações desta forma, porém agora existe a opção de utilizar
storyboards no lugar de controladores independentes.
A grande vantagem de storyboards é que eles nos permitem definir visualmente
como as interações entre as muitas telas dos aplicativos irão ocorrer, tudo isso em um
único arquivo, o que nos dá uma visão ampla de todas as rotas possíveis. Aplicativos
costumam ter
um único storyboard, embora tecnicamente seja possível haver mais
deles.
Tenha em mente que storyboards são uma maneira de criar controladores e defi-
nir como eles interagem entre si - por exemplo, como ir de um para o outro -, porém
nada muito além disso. Tudo o que já foi mostrado no livro, e tudo mais o que ainda
será demonstrado, pode trabalhar em conjunto com storyboards.
5.1. Projeto e conceitos gerais
Casa do Código
Os termos de storyboards
Quando falamos de storyboards em iOS, frequentemente veremos os