Eureka: onCellSelectedがカスタムButtonRowで呼び出されることはありません

作成日 2016年04月21日  ·  3コメント  ·  ソース: xmartlabs/Eureka

おい、

これはおそらく簡単なことですが、私はここで頭を悩ませており、解決策がないまま多くの時間を無駄にしてきました。 独自のカスタムセルを使用して非常に単純なカスタム「SUBMIT」ボタン行を作成しました。セルにはtitleButtonというボタンが1つだけあります。これは、セルの設定です。

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

次に、次のようにフォームに追加します。

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

onTitleButtonPressedが呼び出されたときにセルが選択されるようにしたい。 しかし、これまでのところ理解できません...次のコメント行をすべて試しましたが、どれも機能していないようです。

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

何か案は? 「onCellSelection」である必要はありません。他のどの行メソッドでもかまいません。 私が必要としているのは、フォームレベルでカスタムボタンが押されたことを知る方法です。これにより、フォームの値を処理できます。

onCellSelection custom row

最も参考になるコメント

わかった...

「onTitleButtonPressed」は行ではなくセルにあるメソッドであり、私が呼び出したかったのは行の「onCellSelection」メソッドでした...修正は次のとおりです。

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

これで、フォームレベルで「onCellSelection」メソッドをインターセプトできます。

助けてくれてありがとう、あなたは今この問題を閉じることができます。

全てのコメント3件

OnCellSelectionは、セルが選択されたときに自動的に呼び出されます。 cell.didSelect()で試すこともできますが、セル選択の代わりにボタンのアクションが明らかにトリガーされない限り、それは自動的に行われるはずです。
行を削除するとどうなりますか:
titleButton?.addTarget(self, action: #selector(VIBlueButtonCell.onTitleButtonPressed), forControlEvents: .TouchUpInside)
それでも、 cell.didSelect()はあなたのために働くはずです

これはUIButtonを含むカスタム行です。「addTarget」コードを削除しても、ボタンを押しても何も起こりません。 :(

わかった...

「onTitleButtonPressed」は行ではなくセルにあるメソッドであり、私が呼び出したかったのは行の「onCellSelection」メソッドでした...修正は次のとおりです。

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

これで、フォームレベルで「onCellSelection」メソッドをインターセプトできます。

助けてくれてありがとう、あなたは今この問題を閉じることができます。

このページは役に立ちましたか?
0 / 5 - 0 評価