swift3
1import UIKit 2 3class ViewController: UIViewController, UIToolbarDelegate { 4 5 6 7 @IBOutlet weak var getUpTimeTextField: UITextField! 8 var getUpTimeToolBar:UIToolbar! 9 var getUpTimeDatePicker: UIDatePicker! 10 11 override func viewDidLoad() { 12 super.viewDidLoad() 13 // 入力欄の設定 14 getUpTimeTextField.placeholder = dateToString(date: Date()) //<-`dateToString`のパラメータは`Date`型なので最初から`Date()`を渡す 15 getUpTimeTextField.text = dateToString(date: Date()) //<-同上 16 self.view.addSubview(getUpTimeTextField) 17 18 // UIDatePickerの設定 19 getUpTimeDatePicker = UIDatePicker() 20 getUpTimeDatePicker.addTarget(self, action: #selector(changedDateEvent), for: UIControlEvents.valueChanged) 21 getUpTimeDatePicker.datePickerMode = UIDatePickerMode.time 22 getUpTimeTextField.inputView = getUpTimeDatePicker 23 24 // UIToolBarの設定 25 getUpTimeToolBar = UIToolbar(frame: CGRect(x: 0, y: self.view.frame.size.height/6, width: self.view.frame.size.width, height: 40.0)) 26 27 getUpTimeToolBar.layer.position = CGPoint(x: self.view.frame.size.width/2, y: self.view.frame.size.height-20.0) 28 getUpTimeToolBar.barStyle = .blackTranslucent 29 getUpTimeToolBar.tintColor = UIColor.white 30 getUpTimeToolBar.backgroundColor = UIColor.gray 31 32 let toolBarBtn = UIBarButtonItem(title: "完了", style: .plain, target: self, action: #selector(tappedToolBarBtn)) 33 34 getUpTimeToolBar.items = [toolBarBtn] 35 getUpTimeTextField.inputAccessoryView = getUpTimeToolBar 36 } 37 38 override func didReceiveMemoryWarning() { 39 super.didReceiveMemoryWarning() 40 } 41 42 // 「完了」を押すと閉じる 43 func tappedToolBarBtn(_ sender: UIBarButtonItem) { 44 getUpTimeTextField.resignFirstResponder() 45 } 46 47 func changedDateEvent(_ sender: UIDatePicker){ //<- `UIDatePicker`からのactionの`sender`は必ず`UIDatePicker`になる 48 //`sender`を直接`UIDatePicker`として使えばいいのでキャストは不要 49 self.changeLabelDate(date: sender.date) 50 } 51 52 func changeLabelDate(date: Date) { //<- `NSDate`を使っているところは全て`Date`に置き換える 53 getUpTimeTextField.text = self.dateToString(date: date) 54 } 55 56 func dateToString(date: Date) -> String { 57 //DateFormatterは参照型なので、letが適切 58 let date_formatter = DateFormatter() 59 //曜日の1文字表記をしたいならweekdaysなんて配列はいらない 60 61 date_formatter.locale = Locale(identifier: "ja") 62 date_formatter.dateFormat = "hh時間mm分 " 63 return date_formatter.string(from: date as Date) 64 } 65}
datepickerから現在時刻と比較してアラームを鳴らすようにしたいのですが、dateToStringの関数のどこをどう変えればいいのかご教授ください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。