私は自分のテーブルビューの各セルにテキストフィールドを持っています。ユーザーがリターンキーを押したときにキーボードを終了したい私は試しました:returnキーが押されたuitableviewcell swift
しかし、それは動作しませんし、私のテーブルビューのセル内のテキストフィールドを参照するために離れて見つけることができないようです。助けてください、ありがとう!
私は自分のテーブルビューの各セルにテキストフィールドを持っています。ユーザーがリターンキーを押したときにキーボードを終了したい私は試しました:returnキーが押されたuitableviewcell swift
しかし、それは動作しませんし、私のテーブルビューのセル内のテキストフィールドを参照するために離れて見つけることができないようです。助けてください、ありがとう!
セルクラスにテキストフィールドのIBOutlets
を作成したとします。
あなたはUITextFieldDelegate
に確認にカスタムUITableViewCell
クラスをさせてくださいUITableView
cell.yourTextField.delegate = self
のcellForRow
データソースの方法で自己にあなたのテキストフィールドのデリゲートを与える:awakeFromNib
で
class TableViewCell: UITableViewCell, UITextFieldDelegate {
// ...
}
を、あなたのテキストフィールドのデリゲートがセルにすべきクラス:
override func awakeFromNib() {
// ...
textField.delegate = self
// ...
}
最後に、私はmplement textFieldShouldReturn
:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
希望しました。
デリゲートフォームのストーリーボードを指定できます。
これは間違っています。 'awakeFromNib'で実装されている場合、' ViewController'の一部ではなく、カスタムセルの一部であるだけで、テキストフィールドはテーブルにあります。これは 'cellForRow'にあるべきです –
@RajanMaheshwariアーキテクチャ上の観点からは、* Controllerレイヤ*にセルのコンポーネントを扱えるようにするのは良い考えではありません。これは*" Massive View Controllers "*の理論を強調しています。 –
兄弟、それは '自己 'と関係があります。カスタムセルクラスに自己を作ることはできません。作成している場合、カスタムセルに 'UITextFieldDelegate'を実装する必要があります。それはコンポーネントに関するものではありません。あなたは 'awakeFromNib'でデザインレイアウトを処理できますが、デリゲートの場合はオーナーシップがあります。カスタムセルクラスでデリゲートをselfに実装する場合は、余分なオーバーヘッドとして機能する 'ViewController'のデリゲートを介して再度これを渡す必要があります。 –