如何连续显示标签时间延迟

时间:2012-11-20 08:00:41

标签: iphone ios

我实施了我的计划如下。

- (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.text显示为int i随时间延迟而变化,但它不起作用。它只显示了我的最后一个label.text。我想使用label.text查看每个NSTimer的时间延迟。 提前谢谢。

2 个答案:

答案 0 :(得分: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];
    }
}

答案 1 :(得分: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];
    }
}