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

O número de telefone retornado ao componente de Mensagem é sempre o do primeiro Contato da Lista. Por que esse erro ?

@objc func abrirActionSheet(_ longPress:UILongPressGestureRecognizer) {

if longPress.state == .began {

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

let menu = MenuOpcoesAlunos().configuraMenuDeOpcoesDoAluno(completion: { (opcao) in switch opcao { case .sms: if let componenteMensagem = self.mensagem.configuraSMS(alunoSelecionado){ componenteMensagem.messageComposeDelegate = self.mensagem

self.present(componenteMensagem, animated: true, completion: nil) } break; case .ligacao: break; } }) self.present(menu, animated: true, completion: nil) }

}

2 respostas
solução!

Oi Diello, tudo bem?

Na verdade, está pegando o primeiro elemento da lista pois falta setar a tag da célula de cada aluno

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
        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
    }

Com o celula.tag = indexPath.row conseguimos setar um identificador diferente para cada célula.

Veja se funciona aí ;)

Abs.

Para mim funcionou colocar o celula.tag = indexPath.row.

Obrigado.