Primeiras aulas do curso Swift parte 3: Gestures, DAO e o optional chaining

Swift parte 3: Gestures, DAO e o optional chaining

Gestures, longpress e casting - Introdução

Seja bem-vindo, bem-vinda à terceira e última parte do nosso curso inicial de swift aqui na Alura. Iremos terminar o aplicativo de cadastro de refeições que começamos na parte um e dois, por isso recomendo que você já tenha feito os anteriores, para que possamos seguir sem problemas.

Neste curso, vamos começar estudando como trabalhar com reconhecedores de gestos no IOS, mais conhecido como UIGestureRecognizer. Nós iremos usar no nosso projeto o UILongPressGestureRecognizer. Nada mais é do que um reconhecedor de gesto quando o usuário toca em alguma elemento que herda de UIView, para que consigamos disparar um evento.

Um exemplo clássico foi na célula da table view. Posso adicionar uma nova refeição, uma felicidade, clico em adicionar e quando uso o long press disparo um evento com um alerta para o usuário.

Depois, vamos aprender a trabalhar o alerta, que é esse modal para informar o usuário sobre algo que esteja acontecendo no aplicativo. E também conseguimos remover uma refeição da table view.

Também vamos falar de boas práticas de programação, sobre responsabilidade única, closure, e no último capítulo persistência local de informações no nosso device. Com isso, conseguimos criar e salvar um arquivo nas preferências das pastas do usuário para que não percamos informações que cadastramos no nosso aplicativo.

Vamos utilizar o file manager do IOS para salvar e recuperar essas informações. Esse é o conteúdo que vamos ver nesse curso. Espero que você goste.

Gestures, longpress e casting - Gestures, longpress e castings

Chegamos na terceira e última parte do curso de Swift. Vamos ver bastante conteúdo até o final, e iremos finalizar algumas funcionalidades do nosso aplicativo, como a edição das refeições que implementamos. Se eu adiciono uma refeição e quero ver os detalhes dela, como faço? Nesse momento, não consigo. Ainda é uma limitação.

Nós vamos começar a trabalhar agora com outras alternativas para adicionar ou alterar informação. É muito comum ver em aplicativos uma funcionalidade de edição quando o usuário deixa o dedo pressionado na tela por um tempo. É o long press. Vamos começar a trabalhar nessa API para resolver esse problema, gestos que o usuário pode fazer com a mão para resolver problemas.

Tenho uma tabela com algumas refeições, dentro tenho uma célula. Quero editar as informações dessa célula. Se queremos editar as informações dos objetos, precisamos mexer na célula.

Nessa tela que estamos visualizando, quem controla ela é o arquivo refeições table view controller. No método cellForRow é onde criamos a célula. Temos que dizer para ela que quando eu fizer um gesto quero disparar um método para fazer alguma coisa.

Quero adicionar na célula um gesto, ou gesture recognizer. Ele espera um parâmetro do tipo UIGestureRecognizer. Vamos criar esse objeto para conseguir utilizar, que vai ser o long press, o toque longo na tela. Ele é do tipo UILongPressGestureRecognizer. Vou instanciar esse objeto. Ele vai pedir algumas informações, como o target, o arquivo que esse gesture vai acionar quando for chamado. É o próprio refeições table view controller.

O segundo parâmetro é a action. A ação que eu quero que execute quando o gesture for chamado. Ele é do tipo selector. Já trabalhamos com isso no curso passado.

Esse selector nada mais é do que um seletor de métodos. Preciso criar um método que quero que seja executado quando esse gesture for chamado, é isso que vou fazer agora. Coloco a anotação @objc seguida pelo nome do método.

Posso pedir para o parâmetro o próprio gesture. Assim, já tenho esse objeto. Só para verificar se está funcionando, vou colocar um print e uma mensagem. Agora posso no seletor colocar o jogo da velha, utilizar o selector e chamar meu método.

Criei o objeto do tipo gesture recognizer, vou adicionar à célula, passando o long press. Para ver se está funcionando, vou gerar um novo build para testar. Para chamar o gesture, vou clicar e segurar um pouco. Ele chamou duas vezes, uma quando aperto e uma quando solto. Quero que ele faça só uma vez.

Como ele executa esse método, vou fazer uma verificação para saber o estado que o usuário está em relação ao gesture que coloquei na célula. Se for igual a começando, vou executar aquela mensagem. Agora sim ele chama só no começo, porque colocamos a validação, o if que verifica o estado em que o usuário está em relação ao nosso gesture.

É muito importante você conferir os outros estados. Tem várias opções. O que estamos utilizando é o .began. Já começamos a ver como os gestures funcionam. No próximo vídeo vamos continuar a implementação.

Gestures, longpress e casting - Eventos com longpress

Acabamos de implementar um gesture recognizer, um reconhecedor de gestos na nossa célula, porém ainda não está como deveria, porque quando apertarmos e segurarmos um pouco, o que queremos é recuperar o objeto. Por exemplo, seguro em cima da pizza, mas não tenho acesso à ela para editar. A mesma coisa com os outros.

Uma coisa importante é que esse gesture que adicionamos na célula não funciona apenas para célula, mas também para qualquer tipo que herde de UIView. Se você tem alguma view no storyboard e quer adicionar um gesture, você consegue. Não é exclusivo para célula de table view.

Precisamos agora recuperar o objeto que o usuário fizer o long press. Tenho acesso a esse parâmetro, que é esse gesture, e ele me dá a view que o usuário fez o gesture na tela. Vou criar uma view e vou chamar o gesture.view. Ele traz uma view opcional, que nada mais é do que a célula. Eu, programador, sei que isso é uma célula, o compilador não sabe.

Posso transformar essa view em uma célula, porque eu sei que sempre veículo devolver uma célula. Vou fazer um casting para UITableViewCell. Só que isso não é mais uma view, e sim uma célula. Tenho acesso à célula que eu acabei de fazer o log press.

Com a célula, consigo recuperar o index path, a posição que o usuário fez o long press. Vou criar uma constante chamada index path, vou chamar a referência da table view que eu tenho. Quando eu dou o index path ele espera que eu passe uma célula. Eu acabei de recuperar ela. Vou passar a célula e finalmente tenho acesso ao index path.

Só que ele me devolveu um index path opcional. Para evitar trabalhar com esse tipo, posso usar duas verificações. Posso criar um if let, e se isso tiver conteúdo, se for diferente de nil, ele vai entrar aqui e tenho certeza que posso utilizar. Ou posso utilizar o guard let, que também já vimos na primeira parte deste curso.

Ele vai tentar extrair o valor do index path. Se não conseguir, dou um return e ele termina o método aqui. As duas formas funcionam, vai do critério de cada desenvolvedor.

Fazendo uma revisão rápida para você lembrar como extrair os valores de uma variável opcional com segurança. Agora que tenho acesso ao index path, posso pegar a refeição e falar que ela é igual refeições no indexPath.row. Para ver se funcionou, vamos colocar mais um print para imprimir no console o nome da refeição que eu fizer o long press.

Estamos começando a entrar em um nível de objetos que é o que precisamos. Conseguimos adicionar um gesto, recuperar o objeto através desse gesto. Falta utilizar alguma coisa de interface para conseguir editar ou mostrar os detalhes. Veremos como trabalhar com alert controller e tudo mais nos vídeos a seguir.

O importante desta primeira aula é você ter entendido como você trabalha com gesture recognizer. Utilizamos o long press, mas existem vários outros com a mesma implementação. E é importante lembrar que o gesture podemos adicionar em qualquer elemento que herde de UIView, e não necessariamente em uma célula.

Sobre o curso Swift parte 3: Gestures, DAO e o optional chaining

O curso Swift parte 3: Gestures, DAO e o optional chaining possui 211 minutos de vídeos, em um total de 55 atividades. Gostou? Conheça nossos outros cursos de iOS em Mobile, ou leia nossos artigos de Mobile.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda iOS acessando integralmente esse e outros cursos, comece hoje!

  • 1150 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1150 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1150 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1150 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?
Acesso por 1 ano
Estude 24h/dia onde e quando quiser
Novos cursos toda semana