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

longPress.view?.tag sempre retornando 0 independente do item da lista que foi clicado

Ao criar mais de um aluno na agenda notei que o alunoSelecionado estava sendo sempre o primeiro da lista. Mandei imprimir no console o valor do longPress.view?.tag e ele estava sendo como 0, independente do aluno que eu havia selecionado.

Criação do UILongPressGestureReconizer let longPress = UILongPressGestureRecognizer(target: self, action: #selector(abrirActionSheet(_:)))

Criação do alunoSelecionado dentro da função abrirActionSheet guard let alunoSelecionado = gerenciadorDeResultados?.fetchedObjects?[((longPress.view?.tag)!)] else { return }

Alguma ideia? Valeu!

2 respostas
solução!

Oi Felipe, tudo bem?

Na verdade, faltou setar o view.tag do long press no método cellForRow da TableView

Ficaria assim:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let celula = tableView.dequeueReusableCell(withIdentifier: "celula-aluno", for: indexPath) as! HomeTableViewCell
        let longPress = UILongPressGestureRecognizer(target: self, action: #selector(abrirActionSheet(_:)))
        guard let aluno = gerenciadorDeResultados?.fetchedObjects![indexPath.row] else { return celula }
        celula.configuraCelula(aluno)
        celula.addGestureRecognizer(longPress)

        longPress.view?.tag = indexPath.row

        return celula
    }

Dessa forma, conseguimos configurar o longPress identificando o item selecionado com o indexPath.row da TableView.

Veja se funciona =]

Abs.

Funcionou!

Obrigado

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software