2016-05-08 3 views
0

Я работаю быстро и хочу запускать функцию каждую минуту. Я хочу обновить метку с таймером обратного отсчета, сколько минут осталось до следующего обновления.Swift: запускать func каждую минуту

У меня есть базовый вариант рабочего

if let date = newDate { 
     let formatter : NSDateFormatter = NSDateFormatter() 
     formatter.dateFormat = "HH:mm" 
     formatter.timeZone = NSTimeZone.defaultTimeZone() 

     let string : NSString = formatter.stringFromDate(date) 

     let calendar = NSCalendar.currentCalendar() 
     let comp = calendar.components([.Minute], fromDate: date) 
     let minute = comp.minute 

     let remaining : Int = 60 - minute 
     var mins = "s" 
     if remaining == 1 { 
      mins = "" 
     } 

     self.refreshInLabel.text = "Refreshes at \(string) - \n \(remaining) minute\(mins) remaining " 
    } 

, который обновляет, когда я просмотреть страницу на приложение, но я хочу его автоматическое обновление каждые минут. Я посмотрел на NSTimer, я считаю, что это можно сделать с помощью этого (как показано здесь: How to make a countdown with NSTimer on Swift), но я не могу разобраться, как это сделать в минуту, только после определенного времени отображения

Редактировать : я следующий до сих пор

override func viewDidLoad() { 
    super.viewDidLoad() 

    let calendar = NSCalendar.currentCalendar() 
    let comp = calendar.components([.Minute], fromDate: NSDate()) 
    minute = comp.minute 

    _ = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: #selector(AdoptionCentreVC.updateTimer), userInfo: nil, repeats: true) 

} 

func updateTimer() { 
    let calendar = NSCalendar.currentCalendar() 
    let comp = calendar.components([.Minute], fromDate: NSDate()) 
    let curMin = comp.minute 

    if(curMin > minute) { 
     NSLog("Changed") 
     self.minute = curMin 
    } 
} 

Я хотел бы знать, если Theres лучший способ

+0

Там нет 'NSTimer' в коде, так что вам нужно, чтобы добавить его. –

+0

Я знаю это, но я не знаю, что добавить интервал как, так как единственные примеры, которые я могу найти, показывают 60 секунд и т. Д. Не до следующей минуты –

ответ

0

То, что я предлагаю вам, чтобы уволить NSNotification, когда вы хотите начать свой FUNC каждую минуту. Получив NSNotification вызвать функцию так:

var yourTimer = NSTimer() 
func callWhenNotificationReceived(){ 
    yourFuncToFire() 
    yourTimer = NSTimer.scheduledTimerWithTimeInterval(60, target: self, selector: #selector(YourViewController.yourFuncToFire) , userInfo: nil, repeats: true) 
} 
-1
var TotalTime:Int = 0 
var timer: NSTimer? 


triggerCountDownTimerFor(time:Int) 

func triggerCountDownTimerFor(time:Int) 
{ 
    totalTime = time 
    timer = NSTimer.scheduledTimerWithTimeInterval(1, target:self, selector: #selector(LoginViewController.updateTimer), userInfo: nil, repeats: true) 
} 

func updateTimer() 
{ 
    let date = NSDate() 
    let formatter : NSDateFormatter = NSDateFormatter() 
    formatter.dateFormat = "HH:mm" 
    formatter.timeZone = NSTimeZone.defaultTimeZone() 

    let string : NSString = formatter.stringFromDate(date) 

    let calendar = NSCalendar.currentCalendar() 
    let comp = calendar.components([.Minute], fromDate: date) 
    let minute = comp.minute 

    let remaining : Int = TotalTime - minute 
    var mins = "s" 
    if remaining == 1 { 
     mins = "" 
    } 

    print("Refreshes at \(string) - \n \(remaining) minute\(mins) remaining ") 




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