2010-10-21 7 views
7

Ho implementato un NSTtimer e funziona correttamente. Ho anche l'argomento dell'intervallo di tempo connesso a un UISlider per il iPhone. Tuttavia, quando cambio il suo valore, NSTimer è ancora in esecuzione all'intervallo di tempo originale che non viene aggiornato. Come posso implementare un NSTimer e farlo cambiare il suo intervallo di tempo come il valore delle mie modifiche UISlider. Di seguito è la linea che sto usando per il NSTimer.Come aggiornare il mio NSTimer mentre cambio il valore dell'intervallo di tempo

[NSTimer scheduledTimerWithTimeInterval:mySlider.value 
           target:self 
           selector:@selector(myMethod) 
           userInfo:nil 
           repeats:YES]; 

voglio per aggiornare costantemente l'intervallo di tempo con il valore del UISlider.

risposta

6

Non puoi aver paura. Invalidalo con:

[myTimer invalidate]; 

Quindi crearne uno nuovo con la nuova ora. Potrebbe essere necessario impostarlo su zero anche prima.

myTimer = nil; 
myTimer = [NSTimer scheduledTimerWithTimeInterval:mySlider.value 
              target:self 
             selector:@selector(myMethod) 
             userInfo:nil 
              repeats:YES]; 
+0

pensi che questa sia la strada da percorrere se voglio implementare una modalità luce stroboscopica per accendere e spegnere l'iPhone 4 LED – cgossain

+0

Se vuoi un timer variabile lo è. Pensa alla possibilità di avere due timer diversi l'uno dall'altro, anche se potrebbe non funzionare per la tua applicazione. – Ben

+0

bene, grazie per il tuo aiuto, vedrò se riesco a farlo funzionare. – cgossain

0

si può fare qualcosa di simile utilizzando GCD

NSTimeInterval timeInterval=1; 
BOOL timerInvalidate=NO; 
dispatch_async(dispatch_get_global_queue(0, 0), 
       ^{ 
        while (!timerInvalidate){ 
        dispatch_async(dispatch_get_global_queue(0, 0), 
        ^{ 
        //your code; 
        }); 
        [NSThread sleepForTimeInterval:timeInterval]; 
        } 

       }); 

e modificare il valore di TimeInterval da altrove nel codice.

Problemi correlati