如何从iphone中的单视图控制器中禁用tabbar三个视图控制器中的定时器?

时间:2013-11-08 12:39:15

标签: ios iphone objective-c uiviewcontroller uitabbarcontroller

您好我正在开发一个iphone应用程序,在我的应用程序中,我有一个像UItabbar控制器有两个UIview控件的场景。在每个视图控制器中,我有单独的nstimer。

我想知道如何从一个视图控制器中停止所有计时器。

我的计时器代码如下

 -(void)startTimer
 {
     if (_timer == nil)
     {
         _timer = [NSTimer scheduledTimerWithTimeInterval:10.0f
                                                   target:self
                                                 selector:@selector(setProgress)
                                                 userInfo:nil
                                                  repeats:YES];
     }
}
- (void)stopTimer
{
     if (_timer != nil)
     {
         [_timer invalidate];
         _timer = nil;
     }
}
 -(void)setProgress
 {
     [self stopTimer];
     [self initmethod];
 }

如果我导航到uiviewcontroller之一的任何其他页面,我只是通过回调方法进行stoped和invoks。如果我从一个uiviewcontroller导航到其他页面意味着我想在所有三个uiviewcontroller中停止所有计时器。

3 个答案:

答案 0 :(得分:2)

子类uitabbarcontroller并添加方法'stopAllTimers'。该方法将遍历其viewControllers数组,每次发送一个'stopTimer'消息。

答案 1 :(得分:1)

原因,您可以在所有VC的

中使用NSNotification

但是如果你的重复计时器主要用于VC的更新,那么更好的方法是为每个人保存“上次看到的”时间(在viewDidDisappear中)并检查在viewWillAppear方法中保存的时间是否足够远< / p>

答案 2 :(得分:0)

没有直接的方法可以做到这一点。

但是,您可以考虑使用共享的bool变量,例如 shouldStopTimer ,可以在所有viewControllers中访问。

如果 shouldStopTimer 为NO,请在“ setProgress ”方法中添加一项检查。 如果在“ setProgress ”方法中找到 shouldStopTimer 为YES,则使计时器无效。

否则

您可以使用NSNotification使各自的viewControllers中的计时器无效。