使用DatePicker设置闹钟(swift3
问题描述:
我的代码如下,如果你手动使用datePicker来匹配日期和时间与用户的日期和时间,它会打印很酷,但是代码不能用作闹钟。日期选择器提前用户时间和用户时间匹配日期选择器计时器什么都不打印我只是希望能够选择一个日期/时间使用日期选择器,当用户最终匹配datePickers时间只是打印很酷使用DatePicker设置闹钟(swift3
import UIKit
var dateFormatter : DateFormatter!
let datePicker2 = UIDatePicker();
let date = Date()
class ViewController: UIViewController {
@IBOutlet var dateLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
let datePicker : UIDatePicker = UIDatePicker(frame: CGRect(x: 0,y: 330,width: self.view.frame.size.width,height: 220))
datePicker.datePickerMode = UIDatePickerMode.dateAndTime
self.view.addSubview(datePicker)
datePicker.addTarget(self, action: #selector(ViewController.change(_:)), for: UIControlEvents.valueChanged)
dateFormatter = DateFormatter()
dateFormatter.dateFormat = "YYYY-MM-dd hh:mm"
}
@IBAction func change(_ sender : UIDatePicker)
{
let pickerString = dateFormatter.string(from: sender.date)
let nowString = dateFormatter.string(from: Date())
dateLabel.text = pickerString
if pickerString == nowString {
print("cool")
}
}}
答
发生这种情况,因为你的if语句才会被调用时,拾取动作。你需要触发一个计时器每一秒想看看它们是否匹配。要使用下面的方法,你只需要移动pickerString和现在串起来到全局变量。如果你不喜欢,你可以重构和使用,只要你想。
var pickerString: String?
var nowString: String?
override func viewDidLoad() {
super.viewDidLoad()
let _ = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { (timer) in
if pickerString == nowString {
print("cool")
}
}
#buildSucceeded
仅供参考 - 我在提到你没有更新你的日期格式[我刚才的答复(https://stackoverflow.com/a/45108348/1226963)。 – rmaddy