おい、
これはおそらく簡単なことですが、私はここで頭を悩ませており、解決策がないまま多くの時間を無駄にしてきました。 独自のカスタムセルを使用して非常に単純なカスタム「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
は、セルが選択されたときに自動的に呼び出されます。 cell.didSelect()
で試すこともできますが、セル選択の代わりにボタンのアクションが明らかにトリガーされない限り、それは自動的に行われるはずです。
行を削除するとどうなりますか:
titleButton?.addTarget(self, action: #selector(VIBlueButtonCell.onTitleButtonPressed), forControlEvents: .TouchUpInside)
それでも、 cell.didSelect()
はあなたのために働くはずです
これはUIButtonを含むカスタム行です。「addTarget」コードを削除しても、ボタンを押しても何も起こりません。 :(
わかった...
「onTitleButtonPressed」は行ではなくセルにあるメソッドであり、私が呼び出したかったのは行の「onCellSelection」メソッドでした...修正は次のとおりです。
public func onTitleButtonPressed() {
self.baseRow.didSelect()
}
これで、フォームレベルで「onCellSelection」メソッドをインターセプトできます。
助けてくれてありがとう、あなたは今この問題を閉じることができます。
最も参考になるコメント
わかった...
「onTitleButtonPressed」は行ではなくセルにあるメソッドであり、私が呼び出したかったのは行の「onCellSelection」メソッドでした...修正は次のとおりです。
これで、フォームレベルで「onCellSelection」メソッドをインターセプトできます。
助けてくれてありがとう、あなたは今この問題を閉じることができます。