FSCalendarの日付をタップしたら、TextFieldを持ったAlertを表示する

# こんな感じです
<img width="150" alt="79363C2A-0C50-484A-9DC6-CB8C81A8632F_1_201_a.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1466343/6e247755-9683-bc1b-7da6-bdf8e177900b.jpeg">

# コードと簡単説明

* まずは、表示するAlertを作成します。
* アラートにTextFieldを表示するには、`alert.addTextField(configurationHandler:((UITextField) -> Void)?)`を使用します。


```Swift:Alert
    func showTextFieldAlert(targetView:UIViewController){
        
        var productNameTextField:UITextField? //Alertに表示したTextField.Textを入れて使います
        var janCodeTextField:UITextField?
        var deadlineDayTextField:UITextField?

        let alert = UIAlertController(title: "データを追加", message:"データを追加する場合は、値を入力して下さい", preferredStyle: .alert)

        alert.addTextField { (alertProductNameTextField:UITextField) in

            alertProductNameTextField.placeholder = "プレスホルダー"
            productNameTextField = alertProductNameTextField) //

        }

        alert.addTextField { (alertJANCodeTextField:UITextField) in

            alertJANCodeTextField.placeholder = "プレスホルダー"
            janCodeTextField = alertJANCodeTextField

        }
        
        alert.addTextField { (alertDeadlineDayTextField:UITextField) in

            alertDeadlineDayTextField.placeholder = "プレスホルダー"
            deadlineDayTextField = alertDeadlineDayTextField

        }

        alert.addAction(UIAlertAction(title: "キャンセル", style: .default, handler: nil))
        
        alert.addAction(UIAlertAction(title: "追加", style: .default, handler: { _ in

            //追加が押された時の処理

         }))

        targetView.present(alert, animated: true, completion: nil)

    }
```

* FSCalendarで日付のタップを検知するには、`func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {}`を使用します。

```Swift:FSCalendar
func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
        
           //カレンダーの日付がタップされた時に働く処理

     }
```

# 実際にアプリで書いたコード

## Alert

```Swift:Alert
extension Alert{   
    
    func showTextFieldAlert(targetView:UIViewController){
        
        let realmCRUDModel = RealmCRUDModel()
        
        var productNameTextField:UITextField?
        var janCodeTextField:UITextField?
        var deadlineDayTextField:UITextField?

        let alert = UIAlertController(title: "データを追加", message:"データを追加する場合は、値を入力して下さい", preferredStyle: .alert)

        alert.addTextField { (alertProductNameTextField:UITextField) in

            alertProductNameTextField.placeholder = "商品名"
            productNameTextField = alertProductNameTextField

        }

        alert.addTextField { (alertJANCodeTextField:UITextField) in

            alertJANCodeTextField.placeholder = "JANコード"
            janCodeTextField = alertJANCodeTextField

        }
        
        alert.addTextField { (alertDeadlineDayTextField:UITextField) in

            alertDeadlineDayTextField.placeholder = "期限 例:2021年01月01日"
            deadlineDayTextField = alertDeadlineDayTextField

        }
         
        alert.addAction(UIAlertAction(title: "キャンセル", style: .default, handler: nil))
        
        alert.addAction(UIAlertAction(title: "追加", style: .default, handler: { _ in

            realmCRUDModel.createRealm(createProductName: (productNameTextField?.text)!, createJANCode: (janCodeTextField?.text)!, createDeadlineDay: (deadlineDayTextField?.text)!)

         }))

        targetView.present(alert, animated: true, completion: nil)

    }
        
}
```

##FSCalendar

```Swift:ViewController
    func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
            
        alert.showTextFieldAlert(targetView: self)
    
     }
```

# 終わり
初めて、TextField入りのAlertを書いた時に
Alert内のTextField.textをどうすれば使えるのか分からなかったのが懐かしい