Eureka: onCellSelected nunca chamado no ButtonRow personalizado

Criado em 21 abr. 2016  ·  3Comentários  ·  Fonte: xmartlabs/Eureka

Ei,

Provavelmente é fácil, mas estou quebrando a cabeça aqui e perdi muito tempo sem solução. Eu criei uma linha de botão "SUBMIT" personalizada muito simples com sua própria célula personalizada, a célula tem apenas um botão chamado titleButton, aqui está a configuração da célula:

    public override func setup() {
        super.setup()
        titleButton.setTitle(row.value, forState: .Normal)
        titleButton?.addTarget(self, action: #selector(VIBlueButtonCell.onTitleButtonPressed), forControlEvents: .TouchUpInside)
    }

Então eu adiciono ao meu formulário assim:

        section <<< VIBlueButtonRow() { row in
            row.value = "Submit"
        }.onCellSelection({ (cell, row) in
            print("cell selected?")
        })

Eu quero que a célula seja selecionada quando onTitleButtonPressed for chamado; mas até agora não consigo descobrir ... Eu tentei todas as seguintes linhas comentadas, nenhuma parece funcionar:

    public func onTitleButtonPressed() {
//        super.baseRow.select(true)
//        self.baseRow.baseCell.setSelected(true, animated: true)
//        self.setSelected(true, animated: true)
//        self.formCell()?.setSelected(true, animated: true)
//        self.select(nil)
//        self.formCell()?.select(nil)
//        self.baseRow.baseCell.select(nil)
    }

Alguma ideia? Não precisa ser "onCellSelection", qualquer um dos outros métodos de linha servirá. O que eu preciso é uma forma de saber - no nível do formulário - que o botão personalizado foi pressionado, para que eu possa processar os valores do formulário.

onCellSelection custom row

Comentários muito úteis

Eu entendi...

"onTitleButtonPressed" é um método localizado na célula, não na linha, e o que eu queria chamar era o método "onCellSelection" da linha ...

    public func onTitleButtonPressed() {
        self.baseRow.didSelect()
    }

E agora posso interceptar o método "onCellSelection" no nível do formulário.

Obrigado pela ajuda, você pode fechar este problema agora.

Todos 3 comentários

OnCellSelection deve ser chamado automaticamente quando a célula for selecionada. Você pode tentar com cell.didSelect() mas isso deve acontecer automaticamente, a menos que obviamente a ação do botão seja acionada em vez da seleção da célula.
O que acontece se você remover a linha:
titleButton?.addTarget(self, action: #selector(VIBlueButtonCell.onTitleButtonPressed), forControlEvents: .TouchUpInside)
No entanto, cell.didSelect() deve funcionar para você

Esta é uma linha personalizada com um UIButton, se eu remover o código "addTarget", nada acontece quando eu pressiono o botão. :(

Eu entendi...

"onTitleButtonPressed" é um método localizado na célula, não na linha, e o que eu queria chamar era o método "onCellSelection" da linha ...

    public func onTitleButtonPressed() {
        self.baseRow.didSelect()
    }

E agora posso interceptar o método "onCellSelection" no nível do formulário.

Obrigado pela ajuda, você pode fechar este problema agora.

Esta página foi útil?
0 / 5 - 0 avaliações