Comment puis-je créer un compte à rebours dans xcode 4.5
Ok je veux créer PLUSIEURS minuteries commencent tous à un moment différent (25, 50,1 min, 1min 30s...) mais je ne sais pas comment le faire arrêter quand il arrive à 0 et quand il ne l'atteint zéro, ramener le "le Joueur" un autre point de vue.
Heres mon .h fichier
@interface ViewController :UIViewController {
IBOutlet UILabel *seconds;
NSTimer *timer;
int MainInt;
}
@end
Et voilà mon .m fichier
@implementation ViewController
-(void)countDownDuration {
MainInt -= 1;
seconds.text = [NSString stringWithFormat:@"%i", MainInt];
}
-(IBAction)start:(id)sender {
MainInt = 25;
timer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(countDownDuration)
userInfo:nil
repeats:YES];
}
@end
Vous devez vous connecter pour publier un commentaire.
NSTimer ne pas le faire automatiquement, mais il est trivial pour l'ajouter à votre countDownDuration méthode. Par exemple:
Bien sûr, vous voulez créer plusieurs minuteries. Vous pouvez stocker chacun dans une variable différente et de donner à chacun un autre sélecteur. Mais si vous regardez la documentation de NSTimer, la méthode de rappel prend en fait l'objet timer comme un sélecteur; vous êtes ignorant, mais vous ne devriez pas l'être.
Et en attendant, vous pouvez stocker un objet de n'importe quel type que vous souhaitez comme userInfo pour la minuterie, de sorte que c'est un bon endroit pour ranger un distinct actuel du compte à rebours de la valeur pour chaque horloge.
Vous pouvez faire quelque chose comme ceci:
J'ai laissé un peu de détails non écrites (comme la définition de
MyCountdownClass
—qui doit inclure la méthodeinitWithCountdown:
etreduceCountdown
que faire la bonne chose), mais ils doivent tous être assez simple. (Aussi, je suppose que vous voulez un userInfo qui stocke plus que le compte à rebours de la valeur—par exemple, si chaque horloge envoie le joueur d'un point de vue différent, vous avez à ranger le point de vue là aussi.)PS, notez que vous devez maintenant
@selector(countDownDuration:)
. Les nouveaux arrivants à ObjC vis de ce tout le temps.countDownDuration:
etcountDownDuration
sont complètement indépendants des sélecteurs.PPS, la définition complète de
MyCountdownClass
devra être visible danscountDownDuration:
(sauf si vous avez une autre classe du même sélecteurs). Vous pouvez convertir explicitement le résultat deuserInfo
àMyCountdownClass *
pour rendre les choses plus claires.MyCountdownClass
, vous devez donner unreduceCountdown
méthode, ou vous ne serez pas en mesure d'appelerreduceCountdown
sur elle. Désolé de ne pas faire plus clair; je vais modifier la réponse.