segura - safari no pudo abrir la pagina porque el servidor no responde iphone
¿Cómo puedo iniciar y detener NSTimer? (3)
Desarrollo la aplicación Stop Watch. En mi aplicación, hay dos UIButtons, StartBtn
y StopBtn
, y también uso NSTimer
.
Ahora, quiero iniciar NSTimer
cuando el usuario hace clic en StartBtn
y también se detiene cuando hace clic en StopBtn
.
Sé que NSTimer
es detenido por [MyTimerName invalidate];
método, pero no sé cómo iniciar NSTimer
nuevamente?
La clase NSTimer
es un poco incómoda de usar; en lugar de separar la creación / destrucción del inicio / parada, todo se desarrolla. En otras palabras, el temporizador comienza tan pronto como se crea y se detiene tan pronto como se destruye.
Por lo tanto, debe utilizar la existencia del objeto NSTimer
como indicador para indicar si se está ejecutando; algo como esto:
// Private Methods
@interface MyClass ()
{
NSTimer *_timer;
}
- (void)_timerFired:(NSTimer *)timer;
@end
@implementation MyClass
- (IBAction)startTimer:(id)sender {
if (!_timer) {
_timer = [NSTimer scheduledTimerWithTimeInterval:1.0f
target:self
selector:@selector(_timerFired:)
userInfo:nil
repeats:YES];
}
}
- (IBAction)stopTimer:(id)sender {
if ([_timer isValid]) {
[_timer invalidate];
}
_timer = nil;
}
- (void)_timerFired:(NSTimer *)timer {
NSLog(@"ping");
}
Puedes iniciar el temporizador
#define kRefreshTimeInSeconds 1
NSTimer *myTimerName;
.
.
myTimerName = [NSTimer scheduledTimerWithTimeInterval: kRefreshTimeInSeconds
target:self
selector:@selector(handleTimer:)
userInfo:nil
repeats:YES];
Luego la función de delegado:
-(void)handleTimer: (id) sender
{
//Update Values in Label here
}
Y para detener el temporizador
-(void)stopTimer: (id) sender
{
if(myTimerName)
{
[myTimerName invalidate];
myTimerName = nil;
}
}
Siempre puedes usar el fuego para iniciar un NStimer nuevamente
[timer fire];
Para detenerlo:
[timer invalidate];
//remember to set timer to nil after calling invalidate;
timer = nil;