Ola,
Após a implementação do Código dado em aula, notei que não está acontecendo o evento didDeselectItemAt na listagem de pacotes, segue código:
//
// PacotesViagensViewController.swift
// Alura Viagens
//
// Created by Guilherme Golfetto on 04/01/21.
//
import UIKit
class PacotesViagensViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout,UICollectionViewDelegate, UISearchBarDelegate {
@IBOutlet weak var pacotesViagem: UICollectionView!
@IBOutlet weak var pesquisarViagens: UISearchBar!
@IBOutlet weak var labelContadorPacotes: UILabel!
let listaComTodasViagens:Array<Viagem> = ViagemDAO().retornaTodasAsViagens();
var listaViagens:Array<Viagem> = []
override func viewDidLoad() {
super.viewDidLoad()
listaViagens = listaComTodasViagens;
pacotesViagem.dataSource = self
pacotesViagem.delegate = self;
pesquisarViagens.delegate = self;
self.labelContadorPacotes.text = self.atualizaContagemLabel();
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.listaViagens.count;
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let celulaPacote = collectionView.dequeueReusableCell(withReuseIdentifier: "celulaPacote", for: indexPath) as! PacoteViagemCollectionViewCell;
let viagem = listaViagens[indexPath.row];
celulaPacote.labelTitulo.text = viagem.titulo;
celulaPacote.labelQuantidadeDias.text = "\(viagem.quantidadeDeDias) dias";
celulaPacote.labelPreco.text = "R$ \(viagem.preco)";
celulaPacote.imagemViagem.image = UIImage(named: viagem.caminhoDaImagem);
celulaPacote.layer.borderWidth = 0.5;
celulaPacote.layer.borderColor = CGColor(red: 85.0/255.0, green: 85.0/255.0, blue: 85.0/255.0, alpha: 1);
celulaPacote.layer.cornerRadius = 8
return celulaPacote;
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
//dividido por dois porque são duas colunas
let larguraCelula = collectionView.bounds.width / 2;
return CGSize(width: larguraCelula - 15, height: 160)
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
print("Clicou em uma viagem");
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
listaViagens = listaComTodasViagens;
if searchText != "" {
//o [c] é para virar case insetive
//o [d] é para ignorar a acentuação
let filtroListaViagem = NSPredicate(format: "titulo contains[c] %@", searchText);
let listaFiltrada:Array<Viagem> = (listaViagens as NSArray).filtered(using: filtroListaViagem) as! Array;
listaViagens = listaFiltrada;
}
self.labelContadorPacotes.text = self.atualizaContagemLabel();
pacotesViagem.reloadData();
}
func atualizaContagemLabel() -> String {
return listaViagens.count == 1 ? "1 pacote encontrado" : "\(listaViagens.count) pacotes encontrado";
}
}
achei que poderia ser alguma coisa referente ao Swift 4 como foi no NSPredicate, mas o evento simplesmente não dispara no console o print.
Alguém poderia me ajudar??