こんな感じです

コードと簡単説明
- まずは、表示するAlertを作成します。
- アラートにTextFieldを表示するには、
alert.addTextField(configurationHandler:((UITextField) -> Void)?)
を使用します。
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) {}
を使用します。
FSCalendar
func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
//カレンダーの日付がタップされた時に働く処理
}
実際にアプリで書いたコード
Alert
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
ViewController
func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
alert.showTextFieldAlert(targetView: self)
}
終わり
初めて、TextField入りのAlertを書いた時に
Alert内のTextField.textをどうすれば使えるのか分からなかったのが懐かしい