UITableViewCellには2つのUITextFieldインスタンスがあります。 CustomCellでUITextFieldのテキストを取得します。 その関数はtest()です。TableViewControllerのCustomCellでUITextFieldを取得するためのデリゲートトリガと通常トリガの違いは何ですか?
パターンAはUITextFieldの委任であり、 パターンBはプレスセル機能です。
パターンBは動作しましたが、パターンAは動作しませんでした。 私は実際には、仕事をしたい、 これは私の質問です なぜパターンA doesnt仕事?
そして、どうすればTableViewControllerからCustomCellでUITextFieldのテキストを取得できますか?
//Only needed code is written.
protocol CustomTableViewCellDelegate{
func getInputed(textField: UITextField)
}
class CustomTableViewCell: UITableViewCell , UITextFieldDelegate{
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
if myTextField != nil {
myTextField.delegate = self
myTextField2.delegate = self
}
}
//the session is to end
func textFieldShouldEndEditing(textField: UITextField) -> Bool {
if delegate != nil {
self.delegate?.getInputed(textField)
}
return true
}
}
class TableViewController: UITableViewController, CustomTableViewCellDelegate{
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
//Im sure I write like this
cell.delegate = self
}
//Pattern A
func getInputed(textField: UITextField){
test()
}
//Pattern B
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
test()
}
func test(){
self.myTableView.reloadData()
let cell = myTableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: NSIndexPath(forRow: 0, inSection: 0)) as! CustomTableViewCell
print(cell.myTextField.text)
print(cell.myTextField.tag)
print(cell.myTextField2.text)
print(cell.myTextField2.tag)
}
}
'textFieldShouldEndEditing'が呼び出されていることを確認しましたか?また、Cellの代理人として 'TableViewController'のオブジェクトを設定しましたか?もちろん、はい、 – san
です。 textFieldShouldEndEditingが呼び出されます。オプション( "")のみが表示されます。 – YOSUKE
'getInputed'は' Pattern A'で呼び出されますが、 'cell.myTextField.text'の値は' Optional( "") 'ですか? – san