2010-12-06 32 views
1

Avec mon application iPhone, j'ai besoin par exemple d'une étiquette visible pendant une durée déterminée. Comment puis-je gérer cela?
Affichage d'une étiquette qui est par exemple visible pendant 10 secondes mais qui est ensuite supprimée de la hiérarchie de vue?Afficher l'étiquette pour une durée de temps

Merci d'avance pour votre aide! :)

Répondre

2

Affichez l'étiquette, puis démarrez un NSTimer, dont la méthode de rappel timeout masque l'étiquette. (Je me cache l'étiquette au lieu de le retirer de la hiérarchie de la vue, qui peut ou ne peut pas être plus approprié.)

code

est similaire à ma réponse de NSTimers and triggers in Obj-C

MyViewController.h:

... 
@interface MyViewController : UIViewController 
{ 
    ... 
    UILabel* label; 
    NSTimer* timer; 
    ... 
} 
... 

MyViewController.m:

... 
static const NSTimeInterval TIMER_INTERVAL = 10.0; 
... 
- (void)dealloc 
{ 
    [self stopTimer]; 
    ... 
    [super dealloc]; 
} 
... 
- (void)showLabelAndStartTimer 
{ 
    label.hidden = NO; 
    [self startTimer]; 
} 
... 
- (void)startTimer 
{ 
    [self stopTimer]; 

    timer = [NSTimer scheduledTimerWithTimeInterval:TIMER_INTERVAL 
              target:self 
              selector:@selector(timerCallback) 
              userInfo:nil 
              repeats:NO]; 
    [timer retain]; 
} 
... 
- (void)stopTimer 
{ 
    if (timer) 
    { 
     [timer invalidate]; 
     [timer release]; 
     timer = nil; 
    } 
} 
... 
- (void)timerCallback 
{ 
    label.hidden = YES; 
} 
+0

Merci pour votre réponse! Fait exactement ce dont j'ai besoin :). – thedom

2

Mettre cela en viewWillAppear:

[self performSelector:@selector(hideLabel) withObject:nil afterDelay:0.0]; 

Et hideLabel, cacher votre étiquette, comme ceci:

-(void)hideLabel { 
    yourLabel.hidden=YES; 
} 

selon le temps Spécifiez vous à afterDelay:0.0 à cet endroit.

+0

Merci! C'est une approche vraiment facile à cela. Va sauver cet extrait! – thedom