在显示视图时,我需要在其视图控制器中重复调用一个函数——也许每秒一次。如果用户离开视图(通过向下或向上包含导航控制器的堆栈),计时器应该停止。当他们移回视图时,计时器应该恢复。
我如何实现这一目标?有什么特别需要考虑的(如果用户退出应用程序或接听电话?)
在显示视图时,我需要在其视图控制器中重复调用一个函数——也许每秒一次。如果用户离开视图(通过向下或向上包含导航控制器的堆栈),计时器应该停止。当他们移回视图时,计时器应该恢复。
我如何实现这一目标?有什么特别需要考虑的(如果用户退出应用程序或接听电话?)
试试这个代码:
NSTimer *timer;
- (void)viewWillAppear:(BOOL)animated
{
timer = [NSTimer scheduledTimerWithInterval: 0.1 target:self selector:@selector(targetMethod:) userInfo:nil repeats: YES];
}
- (void)viewWillDisappear:(BOOL)animated
{
[timer invalidate];
}
-(void) targetMethod: NSTimer * theTimer
{
NSLog(@"Me is here at 1 sec delay");
}
使用- (void)viewWillAppear:(BOOL)animated
和- (void)viewWillDisappear:(BOOL)animated
设置/重置您的NSTimer
.
将您的计时器存储在一个数组中(如果需要,还可以使用其他计时器)。
当你需要停止定时器使用时[theTimer invalidate];
当您需要恢复它时,解析您的数组计时器并触发它/它们
如果用户更改/停止应用程序,它不会停止当前计时器,它会结束,但其他计时器将不再启动。