UITextFieldsを含むプロトタイプセルを持つUITableViewControllerがあります。これらのカスタムセルを構成するために、UITableViewCellサブクラスを作成しました。textFieldをアウトレットを介してセルサブクラスに接続しました(nonatomic, weak)
。
このサブクラスで、UITableViewControllerがデリゲートとなるプロトコルを作成しました。これにより、これらのtextFieldで何かが変更されるたびに、TableViewControllerがそれを認識します。基本的に、NSUserDefaultsの値を保存するためにこれが必要でした
さらに、これらのtextFieldsから動的に値を取得するために、次のようなことを行うことができます。
((TextFieldCell*)[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:2 inSection:0]]).textField.text
ほとんどの場合、問題なく動作します。ただし、textFieldがスクロールしたためにビューの外にある場合、textField.textから取得する値は(null)です。再びビューに入るとすぐに、すべてが通常に戻ります。
私はアウトレットを弱いものから強いものに変えようとしましたが、役に立たなかった。
クラスでいくつかのプライベートNSStringを定義し、デリゲートプロトコルが呼び出されたときにそれらに入力できると思います。重要なのは、主にセル生成コードを単純化するために、プライベート変数の必要性をできるだけ低く抑えて、コードをできるだけ一般的にしたかったということです。
ビューの外にあるときにtextFieldsの値を取得する他の方法はありますか?
前もって感謝します!