NSTimer qui démare automatiquement au chargement de la vue
bonjour à tous,
je suis un tutoriel qui programme un compte à rebours avec une petite animation.
Le compte à rebours démare grace à un bouton.
J'aimerais faire demarer le compte à rebours automatiquement au chargement de la page et donc sans bouton.
Voici une partie du code de mon mainview.m:
- (IBAction)StartTimer {
time=10.0;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration: 10.0];
ballView.center=redView.center;
[UIView commitAnimations];
timer= [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(countDown) userInfo:nil repeats:YES];
}
-(void)countDown {
time= time -1;
if (time==0)
[timer invalidate];
[self updateLabel];
}
-(void)updateLabel {
countLabel.text=[NSString stringWithFormat:@%i,time];
}
Je pensais que je pouvais démarrer l'action en la mettant dans un viewDidload
directement mais ça ne marche pas.
Merci si certains peuvent me donner un avis
Jaz
ps cidessus mon mainView.h:
@interface MainView :UIView {
IBOutlet UIImageView *ballView;
IBOutlet UILabel *countLabel;
IBOutlet UIImageView *greenView;
IBOutlet UIImageView *pathView;
IBOutlet UIImageView *redView;
NSTimer *timer;
NSUInteger time;
}
@property (nonatomic,retain) UIImageView *ballView;
@property (nonatomic,retain) UIImageView *redView;
@property (nonatomic,retain) UIImageView *greenView;
@property (nonatomic,retain) UIImageView *pathView;
@property (nonatomic,retain) UILabel *countLabel;
@property (nonatomic,retain) NSTimer *timer;
-(void)updateLabel;
-(void)countDown;
- (IBAction)StartTimer;
@end
je suis un tutoriel qui programme un compte à rebours avec une petite animation.
Le compte à rebours démare grace à un bouton.
J'aimerais faire demarer le compte à rebours automatiquement au chargement de la page et donc sans bouton.
Voici une partie du code de mon mainview.m:
- (IBAction)StartTimer {
time=10.0;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration: 10.0];
ballView.center=redView.center;
[UIView commitAnimations];
timer= [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(countDown) userInfo:nil repeats:YES];
}
-(void)countDown {
time= time -1;
if (time==0)
[timer invalidate];
[self updateLabel];
}
-(void)updateLabel {
countLabel.text=[NSString stringWithFormat:@%i,time];
}
Je pensais que je pouvais démarrer l'action en la mettant dans un viewDidload
directement mais ça ne marche pas.
Merci si certains peuvent me donner un avis
Jaz
ps cidessus mon mainView.h:
@interface MainView :UIView {
IBOutlet UIImageView *ballView;
IBOutlet UILabel *countLabel;
IBOutlet UIImageView *greenView;
IBOutlet UIImageView *pathView;
IBOutlet UIImageView *redView;
NSTimer *timer;
NSUInteger time;
}
@property (nonatomic,retain) UIImageView *ballView;
@property (nonatomic,retain) UIImageView *redView;
@property (nonatomic,retain) UIImageView *greenView;
@property (nonatomic,retain) UIImageView *pathView;
@property (nonatomic,retain) UILabel *countLabel;
@property (nonatomic,retain) NSTimer *timer;
-(void)updateLabel;
-(void)countDown;
- (IBAction)StartTimer;
@end
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
et tu appele cette méthode dans ton viewDidLoad
Ca ne changera strictement rien car IBAction = voidÂ
En gros, IBAction est juste un "alias" de void, qui permet à Interface Builder de détecter les actions possibles sur un objet quand il parse les .h. Il ne change par conséquent rien au comportement du code situé dans l'implémentation du message.
Dans le même style, IBOutlet est un "alias" de "rien". Il est donc tout simplement supprimé par le préprocesseur:
Maintenant, pour revenir à la question : Je suis surpris de voir une classe dérivant de UIView et contenant des outlets.... Normalement les outlets sont dans un controlleur (UIViewController), pas dans une vue. De plus, à ma connaissance viewDidLoad n'est jamais appelé sur une vue, mais uniquement sur le controlleur d'une vue (quand cette vue a été chargée).
Je pense donc qu'il y a un gros problème de conception dans le bout de code donné en exemple, et mon premier conseil sera de revoir la documentation concernant le "design pattern" "Modèle/Vue/Controlleur" qui est à la base d'à peu près tout dans Cocoa/CocoaTouch.