我想用多个UIViewControllers维护计时器。 就像,我在ViewController1中创建一个计时器,间隔为60秒。 20秒后,应用程序导航到ViewController2。(因此剩余40秒执行计时器)。 停留20秒后,我回到ViewController1,此时计时器应在40秒后返回,然后在60秒后执行。
那我怎么能这样做呢?
提前致谢。
答案 0 :(得分:0)
虽然它可能是一个更好的做法的解决方案,但您可以在AppDelegate中设置NSTimer
并使AppDelegate
管理细分来推送或弹出您的UIViewControllers
答案 1 :(得分:0)
如果要在多个实例中使用一个项目,请使用单例设计模式进行尝试。但就像看起来一样,你永远不会从你的VC1导航回来,所以所有的对象仍然存在。
在How to Pause/Play NSTimer?的基础上,您可以更改某些部分以使其适合您的情况。
- (void)stopTimer
{
if( timer )
{
[timer invalidate];
[timer release]; // if not ARC
timer = nil;
}
}
- (void)startTimer
{
[self stopTimer];
int interval = 1.;
timer = [[NSTimer scheduledTimerWithTimeInterval:interval
target:self
selector:@selector(countUp)
userInfo:nil repeats:YES] retain]; // retain if not ARC
}
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self timerStart];
}
-(void)viewWillDisappear:(BOOL)animated
{
[self stopTimer];
[super viewWillDisappear:animated];
}
-(void)countUp
{
if(timePassed++ >= 60) // defined in header
{
timePassed=0;
[self myCustomEvent];
}
}