O que precisa ser feito então é informar que, a partir do toque no botão Sobre este
aplicativo, o controlador Sobre seja adicionado. Anteriormente a storyboards este
processo era feito manualmente, através da criação de uma action para o botão, e
a manual instanciação do controlador. Já com storyboards a história fica bem mais
fácil, podendo ser feito tudo visualmente pelo editor, sem qualquer necessidade de
código.
Clique no botão Sobre este aplicativo, segure CTRL e clique e arraste em direção
ao controlador Sobre, de tal forma que sua área fique azulada, e então solte o clique.
Isso fará com que uma conexão - ou melhor, a Segue - seja feita do botão para este
controlador, conforme mostra a imagem 5.6. Na tela popup que aparecer, selecione
o item Push.
79
5.1. Projeto e conceitos gerais
Casa do Código
Figura 5.6: Criar Segue do botão para o controlador
Rode o aplicativo e clique no botão. O que aconteceu? Provavelmente o seguinte
erro:
Terminating app due to uncaught exception 'NSGenericException', reason:
'Push segues can only be used when the source controller is managed by
an instance of UINavigationController.'
Esta mensagem de erro está dizendo que eventos Segue do tipo Push, que foi
o que selecionamos no popup na hora de fazer a conexão, precisam que exista um
UINavigationController associado, caso contrário não é possível navegar en-
tre as Scenes. Para resolver isso é bem simples: selecione o controlador que tem os
botões, já que ele é a primeira tela do aplicativo, e então vá ao menu Editor ->
Embed In -> Navigation Controller, que o Xcode irá adicionar e configu-
rar ele para nós. O resultado deverá ficar como o da imagem 5.7
80
Casa do Código
Capítulo 5. Storyboards
Figura 5.7: Storyboard após a adição do navigation controller
Como pode ver, o primeiro controlador da storyboard (representado pela seta
mais a esquerda) passou a ser o navigation controller, que na prática é um controla-
dor especial que gerencia a navegação entre outros controladores. Se você selecioná-
lo (lembre-se que para selecionar o controlador é necessário clicar na barra preta)
e abrir o Attributes Inspector ( View -> Utilities -> Show Attributes
Inspector) verá que ele está marcado como sendo a Scene inicial, conforme mos-
tra a imagem 5.8.
81
5.1. Projeto e conceitos gerais
Casa do Código
Figura 5.8: Navigation controller definido como sendo o primeiro
Rode o aplicativo novamente e clique no botão, e veja que agora ele funciona
corretamente.
Ver a conexão e tipo de transição
Se você clicar na seta entre dois controladores, poderá visualizar o botão com o
qual a ação está associada, conforme mostra a imagem 5.9, onde o botão é identifi-
cado com uma seleção azul. De quebra, no Attributes Inspector é possível modificar
o tipo de transição, que no nosso caso foi definida como Push.
82
Casa do Código
Capítulo 5. Storyboards
Figura 5.9: Verificar com qual botão a transição da Segue está associado
Título dos controladores
Como agora temos um navigation controller, ele por padrão adiciona uma barra
superior nos controladores, onde é possível definir um título para a tela. Além disso,
no canto superior esquerdo ele também coloca automaticamente um botão para vol-
tar para a tela anterior, como você já deve ter notado. Seguindo a imagem 5.10, dê um
duplo clique na região de título indicado pela seta, e escreva um texto curto e claro
para identificar o controlador em questão - por exemplo, Início e Sobre. Veja
ainda que, na seção Navigation Item do Attributes Insepector, existem três campos
de texto, sendo que os mais interessantes são Title, para o texto que irá aparecer na
barra (é o mesmo texto definid pelo duplo clique) e Back Button, que é o texto que
irá ser utilizado no botão para retornar a tela anterior - caso nenhum valor seja infor-
mado, o navigation controller irá automaticamente utilizar o título da tela anterior.
Obs: o texto do botão Back Button deve ser definido no controlador anterior, ou
seja, aquele para qual a navegação irá retornar. Faça alguns testes para se acostumar
com o funcionamento.
83
5.2. Adicionar os demais controladores
Casa do Código
Figura 5.10: Propriedades de navegação
5.2
Adicionar os demais controladores
Agora que sabemos o funcionamento de storyboards, vamos adicionar os demais
controladores. O processo é igual para todos, mudando apenas o título de cada con-
trolador. Faça assim:
1) Adicione na storyboard um componente do tipo View Controller
localizado na Object Library ( View -> Utilities -> Show Object
Library)
2) Crie a Segue do botão Listar Compromissos para este novo controlador (clique
no botão e depois CTRL + clique e arraste), escolhendo Push como
ação. Obs: isso não pode ser feito se o zoom estiver habilitado, o Xcode não
permite
3) Coloque um título na barra superior deste controlador (por exemplo, Listar)
4) Repita os passos 1 a 3 para a tela Inserir novo compromisso, com o título Inserir
Neste momento o seu resultado deverá estar como o da imagem 5.11. Rode o