由于我有三个时间间隔,一个小于15分钟,第二个大于或等于15,第三个大于或等于 30.在我的情况下,我只检查一次条件。但我想检查每1分钟的条件。因为在一定的时间间隔后,我的所有按钮颜色应该只变成appYellowColor()。任何帮助都是值得的。谢谢预先!这是我的代码。
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 :(得分: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()
计时器,并在应用程序即将激活时重新创建计时器。
答案 1 :(得分:0)
不需要代码,只需要理论。
您需要一个第四个计时器。一套一分钟(60秒)。如果与其他三个同时(或之后)启动,您只需要检查其他三个设置的标志。 (如果重复这三个中的任何一个或全部,请在管道中发送消息时让第四个定时器重置。
答案 2 :(得分:0)
我不知道swift但是在目标c中这样。如果你以特定的时间间隔继续调用特定的方法,你可以使用NSTimer。
首先你的Secound时间间隔大于或等于15.interval / 60&gt; = 15如果我们放置它不会去第三个,因为它总是如此,所以我们需要像这样保持
NetworkService.weAreOnline(true)&amp;&amp; interval / 60&gt; = 15&amp;&amp; interval / 60&lt; 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
// }
}