2017-07-14 94 views
0

我的代碼如下,如果你手動使用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") 
} 
}} 
+0

僅供參考 - 我在提到你沒有更新你的日期格式[我剛纔的答覆(https://stackoverflow.com/a/45108348/1226963)。 – rmaddy

回答

0

發生這種情況,因爲你的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