Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. iOS SDK
Code

Fundamentos do iOS: UIAlertView e UIAlertController

by
Difficulty:BeginnerLength:ShortLanguages:

Portuguese (Português) translation by David Batista (you can also view the original English article)

Mesmo se você acaba de entrar no mundo do desenvolvimento iOS, certamente sabe sobre UIAlertView. A classe UIAlertView tem uma interface simples e é usada para apresentar model alerts.

A Apple tornou o UIAlertView obsoleto através do iOS 8. Com o iOS 8, é recomendado o uso da classe UIAlertController para apresentar action sheets e modal alerts. Nesta dica rápida, eu mostrarei a você como é fácil a transição do UIAlertView para o UIAlertController.

1. Configurando o projeto

Abra o Xcode 6.3+ e crie um novo projeto baseado no template Single View Application.

Choose the Single View Application Template

Chame o projeto de Alerts, defina o Language como Swift e atribua iPhone para o Devices. Informe ao Xcode onde deseja salvar os arquivos do seu projeto e clique em Create.

Configure the Project

Comece adicionando um botão para ativar um alert view. Abra o Main.sotryboard e adicione um botão à view da view controller. Defina o titulo do botão como Show Alert e adicione as restrições necessárias para o botão ficar no lugar.

Create a Simple User Interface

Abra a ViewController.swift e adiciona uma action à implementação da classe. Deixa a implementação da action vazia por enquanto. Revisite o Main.storyboard e conecte a action showAlert da view controller ao evento Touch Up Inside do botão.

2. UIAlertView

Comece exibindo um alert view usando a classe UIAlertView. Como eu mencionei, a interface da classe UIAlertView é muito simples. O sistema operacional cuida dos detalhes básicos. Segue como a implementação atualizada da action showAlert deve ficar.

A inicialização é muito simples. Fornecemos um titulo e uma mensagem, passamos um objeto delegado, um titulo para o botão cancelar e os títulos de quaisquer outros botões que gostaríamos de incluir.

O objeto delegado precisa estar em conformidade com o protocolo UIAlertViewDelegate. Como a view controller atuará como o delegado da alert view, a classe ViewController precisa estar em conformidade com o protocolo UIAlertViewDelegate.

Os métodos do protocolo UIAlertViewDelegate são definidos como opcionais. O método mais usado frequentemente é o alertView(_:clickedButtonAtIndex:). Este método é chamado quando o usuário toca em um botão do alert view. Assim é como a implementação do método alertView(_:clickedButtonAtIndex:) deve ficar.

Compile e rode o aplicativo no simulador iOS e veja se está tudo funcionando como esperado.

3. UIAlertController

A interface da UIAlertController é muito diferente da UIAlertView, mas a motivação da Apple para a transição para a classe UIAlertController faz sentido uma vez que a usarmos algumas vezes. É uma interface elefante e que fará você se sentir familiarizado.

O primeiro beneficio do uso da classe UIAlertController é a falta de protocolo delegado para manipular as interações. Isso significa que precisamos apenas atualizar a implementação da action showAlert. Dê uma olhada na implementação atualizada a seguir.

A inicialização é muito simples. Passamos um titulo, uma mensagem e, mais importante, definimos a preferência de estilo para UIAlertControllerStyle.Alert ou .Alert para simplificar. A preferência de estilo diz ao sistema operacional se o alert controller precisa ser apresentado como uma action sheet, .ActionSheet, ou um modal alert, .Alert.

Ao invés de fornecer títulos para os botões e manipulação para interações através do protocolo UIAlertViewDelegate, adicionamos ações ao alert controller. Toda ação é uma instância da classe UIAlertAction. Criar um UIAlertAction é simples. O inicializador recebe um titulo, um estilo e um manipulador. O argumento estilo é do tipo UIAlertActionStyle. O manipulador é uma closure, recebendo o objeto UIAlertAction como seu único argumento.

O uso de manipuladores ao invés de um protocolo delegado torna a implementação de uma modal alert mais elegante e fácil de entender. Não há mais necessidade de etiquetar as alert views se você estiver trabalhando com várias modal alerts.

Antes de apresentarmos o alert controller ao usuário, adicionamos as duas ações chamando o addAction(_:) no objeto alertController. Perceba que a ordem dos botões na modal alert é determinanda pela ordem em que as ações são adicionadas ao alert controller.

Como a classe UIAlertController é uma subclasse UIViewController, apresentar o alert controller é feito simplesmente chamando o presentViewController(_:animated:completion:), passando o alert controller como o primeiro argumento.

4. UIActionSheet

Não é novidade que a Apple também tornou obsoleto a classe UIActionSheet e o protocolo UIActionSheetDelegate. Com o iOS 8, é recomendando o uso da classe UIAlertController para apresentar uma action sheet.

Apresentar um action sheet é idêntico a apresentar um model alert. A unica diferença é a propriedade preferredStyle da alert controller, que precisar ser definida como UIAlertControllerStyle.ActionSheet, ou .ActionSheet para abreviar, para action sheets.

Conclusão

Mesmo a UIAlertView e a UIActionSheet se tornando obsoletas no iOS 8, você pode continuar usando elas por um futuro previsível. A interface da classe UIAlertController, entretante, é uma melhoria definitiva. Ela adiciona simplicidade e unifica a API para apresentar model alerts e action sheets. E como o UIAlertController é uma subclasse UIViewController, a API lhe parecerá familiar.

Seja o primeiro a saber sobre novas traduções–siga @tutsplus_pt no Twitter!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.