2017-10-21 94 views
-1

J'ai NSTimer et Action pour cela. Mais je veux appeler Action après 5s pour la première fois, 4s pour la deuxième fois et ....non égal scheduledTimerWithTimeInterval pour NSTimer dans Objective-C

_timepast = 6; 
self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(handleDelay) userInfo:nil repeats:YES]; 


-(void)handleDelay 
{ 
    _timepast = _timepast - 1; 
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(_timepast * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
     [self handleTimer]; 
    }); 
} 
+0

Donc cela signifie que vous voulez inverser la minuterie, non? –

+0

@HardikShah oui c'est vrai. –

Répondre

0

tout d'abord si vous voulez commencer l'action après 5 secondes, puis créer la première minuterie qui déclenche après un délai de 5 secondes, puis annule la première minuterie et commencez votre deuxième minuterie avec Countdown de 5. Cela signifie après 5 sec retarder votre sélecteur et gérer l'action à l'intérieur. Je vous donne le code pour le fonctionnement de la seconde minuterie. J'espère que vous saurez comment gérer le premier temporisateur pendant 5 secondes.

  1. Créer deux variables

    var timerCount = 5

    var timer : Timer!

  2. Créer temporisateur de 1 seconde d'intervalle

    timer = Timer.scheduledTimer(timeInterval: 1, target:self, selector: #selector(self.startTimer), userInfo: nil, repeats: true)

  3. Dans le méthode de sélection écriture inverse comme la vérification,

    func startTimer() { if timerCount > 0 { label.text = String(timerCount--) } else { timer.invalidate() } }

+0

Ça ne marche pas .. Je veux mon premier appel d'action après 5 secondes, l'action suivante après 4, après après 3 et les suivants après .5 seconde. vos actions d'appel de code après même temps pour tous. –