Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

A seleção é perdida - sugestão de melhoria

Ao escrever a func abrirActionSheet, o aluno selecionado fica assim:

guard let alunoSelecionado = gerenciadorDeResultados?.fetchedObjects![(longPress.view?.tag)!] else {return}

e ao escrever longPress.view?.tag , perde-se a referência do aluno selecionado na linha em si e pega-se toda a tableView.

Fui perceber esse erro lá na quarta aula ao tentar localizar o segundo aluno no mapa, mas ao invés dele, só aparecia o endereço do primeiro.

2 respostas
solução!

Oi Tábata, tudo bem?

Obrigado pelo feedback.

Para resolver esse bug, basta você setar a propriedade tag da célula no método cellForRowAt.

Ficaria assim:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let celula = tableView.dequeueReusableCell(withIdentifier: "celula-aluno", for: indexPath) as! HomeTableViewCell

        celula.tag = indexPath.row // SETAR ESSA PROPRIEDADE

        let longPress = UILongPressGestureRecognizer(target: self, action: #selector(abrirActionSheet(_:)))
        guard let aluno = gerenciadorDeResultados?.fetchedObjects![indexPath.row] else { return celula }
        celula.configuraCelula(aluno)
        celula.addGestureRecognizer(longPress)

        return celula
    }

Isso deve resolver.

Qualquer dúvida manda aqui no fórum ;)

Abs.

Obrigada pelo esclarecimento e ajuda! :)

Pode deixar.

Abs.