在ViewController中暂停和恢复计时器

时间:2013-02-19 15:00:32

标签: objective-c cocoa-touch ios6

我想在viewcontroller中暂停和恢复计时器,它在mainviewcontroller中显示为子视图。按下主视图控制器中的播放/暂停按钮,它将视图控制器显示为子视图,并播放音频。

在视图控制器中使用此NSTimer

 [NSTimer scheduledTimerWithTimeInterval:2.6
                                 target:self
                               selector:@selector(updateView:)
                               userInfo:nil
                                repeats:YES];

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


 if  (index < [textArray count])
    {


        self.textView.text = [self.textArray objectAtIndex:index];
        self.imageView.image = [self.imagesArray objectAtIndex:index];
        index++;



} else {

   index = 0;

 }

我想在mainviewcontroller中按下播放/暂停按钮时暂停和恢复计时器。我怎么能这样做。

2 个答案:

答案 0 :(得分:2)

NSTimer* myTimer = [NSTimer scheduledTimerWithTimeInterval:2.6
                                 target:self
                               selector:@selector(updateView:)
                               userInfo:nil
                                repeats:YES];

[myTimer invalidate];

/ * 阻止接收器再次发射并请求将其从运行循环中移除。 * /

[myTimer fire];

/ * 您可以使用此方法触发重复计时器,而不会中断其常规点火计划。如果计时器不重复,则在触发后它会自动失效,即使其计划的触发日期尚未到达。 * /

答案 1 :(得分:2)

首先,您必须在接口文件中保留计时器的引用:

NSTimer *myTimer;

在实现文件中,您只需连接然后引用它:

myTimer = [NSTimer scheduledTimerWithTimeInterval:2.6
                             target:self
                           selector:@selector(updateView:)
                           userInfo:nil
                            repeats:YES];

停止定时器通话:

[myTimer invalidate];

重新开始:

[myTimer fire];

有关NSTimer类的详细信息,请参阅NSTimer Class Reference