2016-09-19 6 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 runningich nicht ändern kann Label.text mit Timer in Swift 3

Ich verwende Xcode 8 mit Swift 3. Wenn ich diesen Code ausführen es schreibt „Hallo Welt“ in jeder Sekunde zu trösten, aber Es ist keine Update-Bezeichnung, wenn der Timer läuft. Ich möchte für jede Sekunde einen Countdown für das Label durchführen.

Antwort

0

Versuchen Sie folgendes:

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

I gelöst. Zuerst lösche ich die Zeile "let now = Date()" und ändere "let startTime = Date()