2012-11-20 85 views
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.text爲INT I與時間延遲變化,但它不工作。它只是告訴我最後的label.text。我想看看每個label.text延遲使用NSTimer。 預先感謝您。

回答

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]; 
    } 
} 
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]; 
    } 
}