NSTimer:切换后View更新标签不起作用

时间:2014-06-19 06:54:54

标签: ios objective-c label progress-bar nstimer

我想将NSTimer用作倒计时。柜台工作正常;-)! 但是我切换到另一个viewController,计时器不在“前景”中运行 - 所以标签不会更新....回到这个视图后。

我的NSLOG显示计时器仍在运行,就像我想要的那样;-)

所以我必须工作,我的计时器更新我的标签?

以下是代码:

- (IBAction)startClock:(id)sender {
globalTimer = 20;

timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                          target:self
                                        selector:@selector(updateCircularProgressBar)
                                        userInfo:nil
                                         repeats:YES];


 }


    - (void)updateCircularProgressBar
{
 // Values to be passed on to Circular Progress Bar
 if (globalTimer > 0 && globalTimer <= 1200) {
     globalTimer--;
     minutesLeft = globalTimer / 60;
     secondsLeft = globalTimer % 60;

     [self drawCircularProgressBarWithMinutesLeft:minutesLeft secondsLeft:secondsLeft];
     NSLog(@"Time left: %02d:%02d", minutesLeft, secondsLeft);
 } 
 else {
     [self drawCircularProgressBarWithMinutesLeft:0 secondsLeft:0];
     [timer invalidate];
 }
}

我测试了在viewDidLoad中运行“updateCircularProgressBar”,但这显示没有结果...... THX寻求帮助 使用更多代码更新更多内容:

/*-------------------- TIMER --------------------*/
// Draws the progress circles on top of the already painted background
- (void)drawCircularProgressBarWithMinutesLeft:(NSInteger)minutes secondsLeft:(NSInteger)seconds
{ 
// Removing unused view to prevent them from stacking up
for (id subView in [self.view subviews]) {
 if ([subView isKindOfClass:[CircularProgressTimer class]]) {
         [subView removeFromSuperview];
     }
 }

// Init our view and set current circular progress bar value
 CGRect progressBarFrame = CGRectMake(0, 0, 180, 180);
 progressTimerView = [[CircularProgressTimer alloc] initWithFrame:progressBarFrame];
 [progressTimerView setCenter:CGPointMake(160, 210)];
 [progressTimerView setPercent:seconds];
if (minutes == 0 && seconds <= 0) {
   [progressTimerView setInstanceColor:[UIColor magentaColor]];
}


// Here, setting the minutes left before adding it to the parent view
 [progressTimerView setMinutesLeft:minutesLeft];
 [progressTimerView setSecondsLeft:secondsLeft];
 [self.view addSubview:progressTimerView];
 progressTimerView = nil;
}

标签位于另一个文件(CircularProgressTimer)中,该文件控制progessbar ...

0 个答案:

没有答案