2

我实现了我的程序如下。

- (IBAction) toolbarOption:(UIBarButtonItem *)sender
{
    switch ([sender tag]) {

        case 0:

            [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
        break;

        case 1:

            for (int i=0; i< [array count]; i++)
            {
            label02.hidden = YES;
            label03.hidden = YES;
            label01.text = [array objectAtIndex:i];

            order.text = [NSString stringWithFormat:@"%i of %i", i+1,[array count]];

            NSDictionary *pronunciation = [[SingletonHandle getHandle] getPronunciationPlist];

            label02.text = [pronunciation objectForKey:label01.text]; 
            label03.textColor = [UIColor redColor];
            label03.text = [meaning objectForKey:label01.text];

            [self performSelector:@selector(showButton:) withObject:nil afterDelay:2.0];

            NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:nil selector:@selector(showButton:) userInfo:pronunciation repeats:NO];
            [timer fire];                
            }

        break;

        default:
        break;
}

-(IBAction)showButton:(id)sender
{
    label02.hidden = NO;
    label03.hidden = NO;
    nextButton.hidden = NO;
    previousButton.hidden = NO;
    order.hidden = NO;
}
...

我想显示label.textint i 随着时间延迟而变化,但它不起作用。它只是向我展示了最后一个label.text. 我想label.text使用NSTimer. 先感谢您。

4

2 回答 2

1

您可以使用 NSTimer 作为

theTimer = [NSTimer scheduledTimerWithTimeInterval:1.0f 
        target:self 
        selector:@selector(updateTimer:) 
        userInfo:nil 
        repeats:YES];`

您可以在 func 中更新您的标签

- (void)updateTimer:(NSTimer *)theTimer {
    //static int countTime = 0; 
    countTime += 1;
    _timeOver=_timeOver-1;
    NSString *s = [[NSString alloc] initWithFormat:@"Time left: %d", (_timeOver)];
    self._myTimeCounterLabel.text = s;
    [s release];
    if (_timeOver==0) {
        [self checkIfGameOver];
    }
}
于 2012-11-20T08:08:49.687 回答
0

尝试这个,

NSTimer *aTimer = [NSTimer timerWithTimeInterval:(3.0) target:self selector:@selector(updateTimer:) userInfo:nil repeats:YES];
    NSRunLoop *runner = [NSRunLoop currentRunLoop];
    [runner addTimer:aTimer forMode: NSDefaultRunLoopMode];

定时器动作

- (void)updateTimer:(NSTimer *)theTimer {
    //static int countTime = 0; 
    countTime += 1;
    _timeOver=_timeOver-1;
    NSString *s = [[NSString alloc] initWithFormat:@"Time left: %d", (_timeOver)];
    self._myTimeCounterLabel.text = s;
    [s release];
    if (_timeOver==0) {
        [self checkIfGameOver];
    }
}
于 2012-11-20T08:38:39.600 回答