2016-09-19 27 views
0
@IBOutlet var timeLabel: UILabel! 
var timer = Timer() 

let now = Date() 
let userCalendar = Calendar.current 
let formatter = DateFormatter() 

func printTime() { 

    formatter.dateFormat = "MM/dd/yy hh/mm/ss a" 
    let startTime = now 
    let endTime = formatter.date(from: "01/01/17 00/00/00 a") 

    let difference = userCalendar.dateComponents([.month, .day, .year, .hour, .minute, .second], from: startTime, to: endTime!) 

    timeLabel.text = "Yılbaşına \(difference.month!) ay, \(difference.day!) gün, \(difference.hour!) saat, \(difference.minute!) dakika, \(difference.second!) saniye kaldı" 

    print("hello world") 

} 


override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    timer = Timer.scheduledTimer(timeInterval: 1, 
            target: self, 
            selector: #selector(ViewController.printTime), 
            userInfo: nil, 
            repeats: true) 

} 



override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

When it is running我不能在斯威夫特與變化計時器label.text 3

我使用的Xcode 8斯威夫特3.當我運行這段代碼是寫入控制檯的「hello world」每一秒,但定時器運行時不是更新標籤。我想爲每一秒鐘的標籤倒計時。

回答

0

試試這個:

DispatchQueue.main.after(when: .now() + 1.0) { //after one second 
    timeLabel.text = "Yılbaşına \(difference.month!) ay, \(difference.day!) gün, \(difference.hour!) saat, \(difference.minute!) dakika, \(difference.second!) saniye kaldı" 
} 
0

我解決了。首先我刪除「let now = Date()」一行,然後我改變了「let startTime = Date()