回答編集履歴

2 追記しました。

newmt

newmt score 1255

2018/04/08 06:31  投稿

ご質問内容から考えると、storyboard上で繋げている(=outlet接続している)カスタムセル(自分で作成したセル)内のUITextFieldに対して
ソースコードでアクション(delegate)を設定したいということでしょうか?
(異なっていたらごめんなさい。どういう実装をされているか教えていただけましたら幸いです。)
例えば、
ViewControllerというUIViewControllerがあり、
カスタムセルにtextFieldというUITextFieldがcell内に設定されているとします。
```
class ViewController: UIVIewController {  
   // これはCellからViewControllerに移動する  
   // VieWillAppearなどで値は取得している前提で話を進めます  
   var postArray: [PostData] = []  
 
 
```  
 
```  
// ViewControllerの中のセルを設定しているメソッド
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
   
   // (中略)
   
   // UITextFieldDelegateを設定
   //UITextFieldDelegateを設定
   cell.textField.delegate = self
 
   //②どのセルのUITextFieldかを知りたい場合は  
   //tagに番号をつけて区別できるようにする方法などもあります  
   cell.textField.tag = indexPath.row  
 
   // postArrayの中からcellに表示したいデータを取得する  
   let post = postArray[indexPath.row]  
     
   // cellに値を設定する  
   cell.setPostData(post)  
   // (以下略)
}
extension ViewController: UITextFieldDelegate {
   
   // ①上記でUITextFieldのdelegateにViewControllerを設定しているため、  
   // 下記のメソッドで全てのセルのUITextFieldの処理を受け取ることができる  
 
   /*
    UITextFieldが編集された直前に呼ばれる
    */
   func textFieldDidBeginEditing(_ textField: UITextField) {
 
       // ②上記で設定したtextField.tagからどの行のUITextFieldかを知ることができます。  
       print("tag: \(textField.tag)")  
       print("textFieldDidBeginEditing: \(textField.text!)")
   }
   
   /*
    UITextFieldが編集された直後に呼ばれる
    */
   func textFieldDidEndEditing(_ textField: UITextField) {
       print("textFieldDidEndEditing: \(textField.text!)")
   }
   
   /*
    改行ボタンが押された際に呼ばれる
    */
   func textFieldShouldReturn(_ textField: UITextField) -> Bool {
       print("textFieldShouldReturn \(textField.text!)")
       
       // 改行ボタンが押されたらKeyboardを閉じる処理.
       textField.resignFirstResponder()
       
       return true
   }
}
```
1 追記しました。

newmt

newmt score 1255

2018/04/07 07:08  投稿

ご質問内容から考えると、storyboard上で繋げている(=outlet接続している)カスタムセル(自分で作成したセル)内のUITextFieldに対して
ソースコードでアクション(delegate)を設定したいということでしょうか?
(異なっていたらごめんなさい。どういう実装をされているか教えていただけましたら幸いです。)
例えば、
ViewControllerというUIViewControllerがあり、
カスタムセルにtextFieldというUITextFieldがcell内に設定されているとします。
```
// ViewControllerの中のセルを設定しているメソッド
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
   
   // (中略)
   
   // UITextFieldDelegateを設定
   cell.textField.delegate = self
 
   // (以下略)  
}
extension ViewController: UITextFieldDelegate {
   
   /*
    UITextFieldが編集された直前に呼ばれる
    */
   func textFieldDidBeginEditing(_ textField: UITextField) {
       print("textFieldDidBeginEditing: \(textField.text!)")
   }
   
   /*
    UITextFieldが編集された直後に呼ばれる
    */
   func textFieldDidEndEditing(_ textField: UITextField) {
       print("textFieldDidEndEditing: \(textField.text!)")
   }
   
   /*
    改行ボタンが押された際に呼ばれる
    */
   func textFieldShouldReturn(_ textField: UITextField) -> Bool {
       print("textFieldShouldReturn \(textField.text!)")
       
       // 改行ボタンが押されたらKeyboardを閉じる処理.
       textField.resignFirstResponder()
       
       return true
   }
}
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る