2016-10-16 14 views
0

私は自分のテーブルビューの各セルにテキストフィールドを持っています。ユーザーがリターンキーを押したときにキーボードを終了したい私は試しました:returnキーが押されたuitableviewcell swift

しかし、それは動作しませんし、私のテーブルビューのセル内のテキストフィールドを参照するために離れて見つけることができないようです。助けてください、ありがとう!

答えて

1

セルクラスにテキストフィールドのIBOutletsを作成したとします。
あなたはUITextFieldDelegateに確認にカスタムUITableViewCellクラスをさせてくださいUITableView

cell.yourTextField.delegate = self 
0

cellForRowデータソースの方法で自己にあなたのテキストフィールドのデリゲートを与える:awakeFromNib

class TableViewCell: UITableViewCell, UITextFieldDelegate { 
    // ... 
} 

を、あなたのテキストフィールドのデリゲートがセルにすべきクラス:

override func awakeFromNib() { 
    // ... 

    textField.delegate = self 

    // ... 
} 

最後に、私はmplement textFieldShouldReturn

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 

    textField.resignFirstResponder() 

    return true 
} 

希望しました。

+0

これは間違っています。 'awakeFromNib'で実装されている場合、' ViewController'の一部ではなく、カスタムセルの一部であるだけで、テキストフィールドはテーブルにあります。これは 'cellForRow'にあるべきです –

+0

@RajanMaheshwariアーキテクチャ上の観点からは、* Controllerレイヤ*にセルのコンポーネントを扱えるようにするのは良い考えではありません。これは*" Massive View Controllers "*の理論を強調しています。 –

+0

兄弟、それは '自己 'と関係があります。カスタムセルクラスに自己を作ることはできません。作成している場合、カスタムセルに 'UITextFieldDelegate'を実装する必要があります。それはコンポーネントに関するものではありません。あなたは 'awakeFromNib'でデザインレイアウトを処理できますが、デリゲートの場合はオーナーシップがあります。カスタムセルクラスでデリゲートをselfに実装する場合は、余分なオーバーヘッドとして機能する 'ViewController'のデリゲートを介して再度これを渡す必要があります。 –

0

デリゲートフォームのストーリーボードを指定できます。

関連する問題