0

こんにちは、iPhone アプリケーションを開発しています。私のアプリケーションには、2 つの UIviewcontroller を持つ UItabbar コントローラーのようなシナリオがあります。各View Controllerには、個別のnstimerがあります。

View Controllerの1つからすべてのタイマーを停止する方法を知りたいです。

私のタイマーコードは次のとおりです

 -(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 の 1 つから他のページに移動すると、停止してコールバック メソッドで呼び出します。uiviewcontroller の 1 つから他のページに移動すると、3 つすべての uiviewcontroller のすべてのタイマーを停止したいということになります。

4

3 に答える 3

0

これを行う直接的な方法はありません。

ただし、すべての viewController でアクセスできる共有 bool 変数、たとえばshouldStopTimerの使用を検討することもできます。

shouldStopTimerが NOの場合は、「 setProgress」メソッドにチェックを追加します。「 setProgress」メソッドでshouldStopTimerが YES であることがわかった場合は、タイマーを無効にします。

そうしないと

NSNotification を使用して、それぞれの viewController のタイマーを無効にすることができます。

于 2013-11-08T12:51:50.413 に答える