2017-03-29 31 views
1

正如我有三個時間間隔一個小於15分鐘,比第二個大於或等於15和第三個是大於或等於 30.In我的情況下,只有我檢查一旦conditions.But我要檢查每1 minute.Because條件的特定一個時間間隔所有按鈕的顏色後,我應該改變成appYellowColor()only.Any幫助appreciable.Thanks提前!這是我的代碼。Swift2:反覆檢查的一個時間間隔中的iOS

if NetworkService.weAreOnline(true) && interval/60 < 15 { 

     print("appYellowColor()") 
     startButton.backgroundColor = UIColor.appYellowColor() 

} 
else if NetworkService.weAreOnline(true) && interval/60 >= 15 && interval/60 < 30 { 

     print("grayColor()") 
     startButton.backgroundColor = UIColor.grayColor() 
     startButton.userInteractionEnabled = false 

} 
else if NetworkService.weAreOnline(true) && interval/60 >= 30 { 

     print("redColor()") 
     startButton.backgroundColor = UIColor.redColor() 
     startButton.userInteractionEnabled = false 

} 
+0

輪詢在這種情況下是非常糟糕的。考慮使用* NetworkService *,當條件改變時**通知**。 *不要問,告訴* – vadian

+0

斯威夫特2已經死了。更新。 – matt

+0

@Vinathy NVR沒有 –

回答

0

一種可能的方式來支持重複的任務就是把它的邏輯放到一個功能(它可以在你的情況checkIsOnline()),並安排Timer重複選項。

let timer = Timer(fire: Date.init(timeIntervalSinceNow: 60), interval: 60, repeats: true) { (timer) in 
    self.checkIsOnline() 
} 

RunLoop.main.add(timer, forMode: .defaultRunLoopMode) 

當應用即將背景可以invalidate()你的計時器,並重新創建它,當應用程序即將活躍起來。

+0

請你能詳細的解決方案@ nshuman.Thanks。 –

0

無需代碼,只是理論。

你需要一個第四計時器。一分鐘(60秒)。如果與其他三人同時(或之後)開始,則只需檢查其他三人設置的標誌。 (如果這三個中的任何一個或所有這些都重複了,這個第四個定時器在發送消息的時候會重置一些東西

0

我不知道很快,但是在目標c中是這樣的。如果你調用特定的方法,你可以使用NSTimer的時間間隔

你的Secound時間間隔大於或等於15.interval/60> = 15的第一件事,如果我們放置它,它將不會進入第三個,因爲它總是如此,所以我們需要保持像此

NetworkService.weAreOnline(真)& &間隔/ 60> = 15 & & INT erval/60 < 30當它失敗時,它進入第三個條件

NSTimer *reachTimer; 
//NSInteger secondsLeft; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    //to stop the timer you can use secondsLeft 
    //secondsLeft = 0; 
    reachTimer = [NSTimer scheduledTimerWithTimeInterval:5.0f target:self selector:@selector(updateCounter:) userInfo:nil repeats:YES]; 

} 

// This method is called every 300 secs 

-(void)updateCounter:(NSTimer *)theTimer{ 

    // Build your login here 

    // //if you want to stop timer after 300 sec you can use below code 
    // secondsLeft = secondsLeft+5; 
    // if(secondsLeft>=300) // 60sec * 5min= 300 
    // { 
    //  [reachTimer invalidate];// stop timer 
    // } 

}