私はカスタムUITableViewCellクラスを持っています。カスタム内の行番号を知るUITableViewCell - 新しいシワ
セルに編集可能なUITextFieldがあります。このテキストフィールドが
func textFieldDidEndEditing(_ textField: UITextField)
内のIトラップに編集の最後に編集されたときに、私のカスタムセルクラスがUITextFieldDelegateを実装ので、私は確かにコールバックを得るのですか。
同様の質問に対する他の回答と同様です。まず、テーブルをロードするときにUITextFieldのタグを行番号に設定しようとしました。
これはうまくいきますが、しわがあります。私のテーブルでは、行を移動できます。行が移動されると、テーブルがロードされたときにタグが保持されるので、タグは挿入時にすべてオフになります。私は移動後にテーブルをリロードすることでこれを解決することができますが、これはリストを先頭に戻します。
1).tagを使用せずにカスタムセルクラス内の行番号を取得するには、よりクリーンな方法がありますか?これは、行の移動を許可すると失敗します。
2)もし#1に該当しない場合は、先に表示された行を最初に取得するために表示をリロードしてから、テーブルのリロードを行った後、同じトップカレント行にリセットして戻る頂点に?
また、私はちょうどので、私は編集しかしこの呼ばれることは決してありませんした後に行番号を持っているでしょうのUITableViewが含まれているのUIViewController内でこの
func tableView(_ tableView: UITableView, didEndEditingRowAt indexPath: IndexPath?)
とトラップ編集の終わりを使用しようとしました。これを解決するもう1つの方法は、didEndEditingRowAtを強制的に呼び出すことです。何らかの理由でこれは呼び出されません。 UITextFieldDelegateは私のViewControllerである(それは含まれています。私は編集
var textFieldHandle : UITextField?
func textFieldDidBeginEditing(_ textField: UITextField) {
print("editing field in cell")
textFieldHandle = textField
}
func textFieldDidEndEditing(_ textField: UITextField) {
print("done editing text field in cell with text -\(textField.text!)-")
if textFieldHandle != nil {
textFieldHandle?.endEditing(true) // force end editing so get table event - does not work
if let index = textFieldHandle?.tag {
if index >= 0 && index < quizListItems.count {
// if we have a proper index then store back in answer array so we dont lose it
quizListItems[index].text = textField.text!
print("--set value at index \(index)")
}
}
}
}
あなたのcellForRowAtIndexPathに、あなたのtextFieldsのデリゲートを設定しましたか?別の考え - > http://stackoverflow.com/a/22063354/4475605 – Adrian
hmmm .. ViewControllerの** ViewDidLoad **にテーブル代理人を置く。 TextFieldデリゲートを**カスタムのCellクラスの** override init(**)に入れました。カスタムセルクラスにTextFieldデリゲートを持たず、その代わりにViewControllerにtheTextFiledデリゲートを持たせ(VC内でUITextFieldDelegateを実装する)必要がありますか? 4475605への参照のためにあなたは精緻化することができますか?私は、編集が完了した後に呼び出されるtextFiled ** didSelectRowAtIndexPath **(私はそう思わない)の新しい値でテーブルがロードされているデータ配列を更新できるので、セルの編集が完了したときを知る必要がある。 – john
更新textFieldを動かす際の 'UITextField'のタグは? 2つの 'indexPaths'にある' UITextField'の 'moveRowAtIndexPath'デリゲートと更新タグを使用してください。 – Rikh