从另一个视图控制器访问后使 NSTimer 对象无效
invalidate a NSTimer object after visiting from another view controller
情况
我有两个视图控制器 VC1 和 VC2。
在 VC1 中,我需要以 x 秒 的间隔连续调用一个选择器 t 秒(其中 x < t).
我正在使用 NSTimer
对象来管理它。如果我在 VC1 中,那么 NSTimer
对象工作正常。它在 x second 之后调用它自己。这是我的代码
timer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(methodName) userInfo:nil repeats:YES];
我也可以通过 [timer invalidate];
停止
问题:
现在我要去 VC2 然后再回到 VC1.
如何在VC1中停止timer
?
谢谢。
您可以停止正在使用的定时器
- (void)viewDidDisappear:(BOOL)animated {
[timer invalidate]
}
您可以使用委托来实现它。
您只需要在 VC2 中创建一个委托,然后在 VC1 中实现,在委托方法中(在 VC1 中)您只需使 NSTimer
.
无效
你可以通过实现 forword 声明来做到这一点
@class VC1
到 VC2 并在 VC1
中创建一个 BOOL
属性
现在当您从 VC2
推送 VC1 时设置 VC1.property = true
现在在 viewWillAppear 方法中检查 VC1
中的这个布尔值 属性
如果此 属性 比 invalidate timer
为真,并且还将 nil
设置为您的 timer
对象。
希望这对您有所帮助。
在VC1.h
@property bool timer validate;
在VC1.m调用VC2时输入这段代码
_timervalidate=true;
在使用 viewWillAppear 方法停止计时器后
-(void)viewWillAppear:(BOOL)animated
{
if(_timervalidate==true)
{
[timer invalidate];
}
}
情况
我有两个视图控制器 VC1 和 VC2。 在 VC1 中,我需要以 x 秒 的间隔连续调用一个选择器 t 秒(其中 x < t).
我正在使用 NSTimer
对象来管理它。如果我在 VC1 中,那么 NSTimer
对象工作正常。它在 x second 之后调用它自己。这是我的代码
timer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(methodName) userInfo:nil repeats:YES];
我也可以通过 [timer invalidate];
问题:
现在我要去 VC2 然后再回到 VC1.
如何在VC1中停止timer
?
谢谢。
您可以停止正在使用的定时器
- (void)viewDidDisappear:(BOOL)animated {
[timer invalidate]
}
您可以使用委托来实现它。
您只需要在 VC2 中创建一个委托,然后在 VC1 中实现,在委托方法中(在 VC1 中)您只需使 NSTimer
.
你可以通过实现 forword 声明来做到这一点
@class VC1
到 VC2 并在 VC1
BOOL
属性
现在当您从 VC2
推送 VC1 时设置VC1.property = true
现在在 viewWillAppear 方法中检查 VC1
中的这个布尔值 属性如果此 属性 比 invalidate timer
为真,并且还将 nil
设置为您的 timer
对象。
希望这对您有所帮助。
在VC1.h
@property bool timer validate;
在VC1.m调用VC2时输入这段代码
_timervalidate=true;
在使用 viewWillAppear 方法停止计时器后
-(void)viewWillAppear:(BOOL)animated
{
if(_timervalidate==true)
{
[timer invalidate];
}
}