2016-09-19 3 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 с таймером в Swift 3

Я использую Xcode 8 с Swift 3. Когда я запускаю этот код это пишет утешать «привет мир» каждый второй, но это не обновление метки, когда таймер работает. Я хочу обратный отсчет для метки на каждую секунду.

ответ

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()

Смежные вопросы