Steil Rafael - iOS: Programe para iPhone e iPad стр 16.

Шрифт
Фон

Embora não seja obrigatório nomear deste jeito, esta é a maneira que todos os de-

senvolvedores costumam utilizar.

Além disso, quando trabalhamos com interfaces

gráficas utilizando arquivos .xib, respeitar a convenção de nomes simplifica o có-

digo, pois o comportamento padrão do iOS é procurar o .xib que tenha o mesmo

nome da classe.

Abra o arquivo OpcoesController.xib e adicione um componente do tipo

Label no meio da tela, com o texto Opções, apenas para termos uma indicação

visual quando ele for exibido.

Agora vá ao arquivo ViewController.m, onde você irá encontrar o corpo

dos métodos que foram conectados anteriormente (pelo Main.storyboard) ao

arquivo ViewController.h. Cabe a nós implementar cada uma das ações dos

botões. O primeiro método é o showVertical, que representa a animação padrão

57

4.1. Passando de um controlador para outro

Casa do Código

do iOS para o tipo de operação que iremos realizar. O que deve ser feito é criar

uma instância do OpcoesController, especificar o tipo da animação e invocar o

método presentModalViewController.

Vamos primeiro ver a implementação completa do método, conforme a listagem

abaixo:

1 - (IBAction)showVertical:(id)sender {

2

OpcoesController *c = [[OpcoesController alloc] init];

3

c.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

4

5

[self presentViewController:c animated:YES completion:nil];

6 }

Obs:

não

esqueça

de

adicionar

a

instrução

#import

"OpcoesController.h" no início do arquivo.

Na linha 3 é definido o tipo de animação desejado, que no caso é

UIModalTransitionStyleCoverVertical. Esta é a animação padrão, e po-

demos omitir isso na prática. Porém, como neste caso desejamos testar todas as

animações possíveis, é interessante atribuirmos explicitamente o tipo desejado.

Já a linha 5 é a responsável por mostrar de fato o nome controller ao usuário,

através do método presentViewController:animated:completion.

Rode o aplicativo ( Command+R) e clique no botão Subir vertical. Você deverá

ver o OpcoesController cobrir toda a tela, vindo de baixo para cima. Esta foi a

primeira animação. O próximo método a implementar é o showHorizontal, que

mostrará utilizando um efeito de girar a tela horizontalmente. A implementação

completa está abaixo:

- (IBAction)showHorizontal:(id)sender {

OpcoesController *c = [[OpcoesController alloc] init];

c.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

[self presentViewController:c animated:YES completion:nil];

}

Rode novamente o aplicativo e clique no botão Girar horizontal, e veja a dife-

rença no efeito da animação. Bacana, não?

Repare

bem

na

implementação

dos

métodos

showVertical

e

showHorizontal, e veja que a maior parte do código deles é igual, mu-

dando apenas o tipo de animação desejada. Como temos mais duas animações

58

Casa do Código

Capítulo 4. Coordenando o trabalho com controladores

para implementar, o ideal seria isolar o código em comum a todos os métodos e

centralizá-lo em um único lugar, evitando assim a duplicação de trabalho. Embora

estejamos fazendo apenas um aplicativo de testes, quanto mais cedo adotar a prática

de reutilizar código, mais rapidamente ela se tornará natural, e consequentemente o

seu sistema ficará mais fácil de manter.

Portanto, antes de implementar os demais métodos, vamos primeiro criar um

método que fará todo o trabalho repetitivo, recebendo como parâmetro o tipo de

animação a ser utilizada. Veja a implementação completa abaixo:

-(void) mostraControllerComAnimacao:(UIModalTransitionStyle) estilo {

OpcoesController *c = [[OpcoesController alloc] init];

c.modalTransitionStyle = estilo;

[self presentViewController:c animated:YES completion:nil];

}

O método mostraControllerComAnimacao: é praticamente igual ao có-

digo que fizemos anteriormente, com a diferença de que ele recebe um argumento

especificando o tipo de animação. Coloque a implementação dele em qualquer lugar

da classe (por exemplo, logo abaixo de @implementation), e implemente o resto

dos métodos da seguinte maneira:

- (IBAction)showDissolve:(id)sender {

[self

mostraControllerComAnimacao:UIModalTransitionStyleCrossDissolve];

}

- (IBAction)showPageCurl:(id)sender {

[self

mostraControllerComAnimacao:UIModalTransitionStylePartialCurl];

}

- (IBAction)showVertical:(id)sender {

[self

ostraControllerComAnimacao:UIModalTransitionStyleCoverVertical];

}

- (IBAction)showHorizontal:(id)sender {

[self

mostraControllerComAnimacao:UIModalTransitionStyleFlipHorizontal];

}

59

4.2. Fechar um controlador modal

Casa do Código

Bem mais simples e prático, e sem duplicar código. Rode novamente o aplicativo

e teste cada um dos botões.

4.2

Fechar um controlador modal

Uma coisa que você deve ter notado é que, depois de abir um controlador usando

presentViewController, não havia nenhuma maneira de fechá-lo ou voltar

para a tela anterior. Contudo, isso é bastante simples de se resolver através do mé-

todo dismissViewControllerAnimated:completion, que deve ser adicio-

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке