我如何使用NSTimer与应用程序的导航流程?

时间:2015-02-10 11:07:53

标签: ios timer nstimer nstimeinterval

我想用多个UIViewControllers维护计时器。 就像,我在ViewController1中创建一个计时器,间隔为60秒。 20秒后,应用程序导航到ViewController2。(因此剩余40秒执行计时器)。 停留20秒后,我回到ViewController1,此时计时器应在40秒后返回,然后在60秒后执行。

那我怎么能这样做呢?

提前致谢。

2 个答案:

答案 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];
    }
}