2016-05-08 5 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の場合、私はあなたがあなたのFUNC分ごとに起動したい場合NSNotificationを発射することであることを示唆している何より良い方法

+0

をあなたのコードには 'NSTimer'はありませんので、あなたはそれを追加する必要があります。 –

+0

私はそれを知っていますが、私は唯一の例は私が次の分に60秒などを表示見つけることができるので、間隔を追加するか分からない –

答えて

0

を知りたいのです。あなたは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 ") 




} 
関連する問題