我在自定义视图控制器中有一个弹出窗口,由于我的NSTimer
而在1分钟后显示。
我的NSTimer
代码:
[NSTimer scheduledTimerWithTimeInterval:60.0f
target:self selector:@selector(methodB:) userInfo:nil repeats:YES];`
显示弹出窗口的方法
- (void) methodB:(NSTimer *)timer
{
//Do calculations.
[self showPopupWithStyle:CNPPopupStyleFullscreen];
}
如果NSTimer
当前处于打开,正在运行或处于活动状态,我试图将[self showPopupWithStyle:CNPPopupStyleFullscreen];
设置为停止运行。
如果弹出视图控制器未打开,正在运行或处于活动状态,我想再次启动NSTimer
。
非常感谢任何帮助,样品或示例!
我的项目是用Objective-C编写的。
编辑:
我尝试了建议中的答案"可能类似"答案,它似乎不适用于我正在做的事情。如何停止NSTimer
?
答案 0 :(得分:1)
这似乎可以解决问题。
@property (nonatomic, strong) CNPPopupController *popupController;
- (void)_timerFired:(NSTimer *)timer;
@end
NSTimer *_timer;
- (void)viewDidLoad {
[super viewDidLoad];
if (!_timer) {
_timer = [NSTimer scheduledTimerWithTimeInterval:10.0f
target:self
selector:@selector(_timerFired:)
userInfo:nil
repeats:YES];
}
}
- (void)_timerFired:(NSTimer *)timer {
if ([_timer isValid]) {
[self showPopupWithStyle:CNPPopupStyleFullscreen];
[_timer invalidate];
}
_timer = nil;
NSLog(@"ping");
}
如果您想重新启动计时器,只需将此代码添加到您要开始备份的操作中。
if (!_timer) {
_timer = [NSTimer scheduledTimerWithTimeInterval:10.0f
target:self
selector:@selector(_timerFired:)
userInfo:nil
repeats:YES];
}
希望这有帮助! :)