我正在制作一个Simon Said应用程序来了解有关Objective C的更多信息。
我的SimonSayViewController有4个按钮。当向用户显示模式时,他们的图像需要相应地更改。
固定间隔计时器绝对没问题。
我似乎找不到一个例子。
我基本上想要一种设置,例如:
TimerTicked回调,当我可以执行图像交换逻辑时。
理想情况下,TimerTicked方法是我的SimonSaysViewController的方法。
这将如何完成?
谢谢
NSTimer 是你的朋友!将 NSTimer 属性添加到 SimonSaysViewController。
@property (strong, nonatomic) NSTimer *tickTockTimer;
根据您希望计时器启动的时间,您需要设置计时器。假设您希望计时器在视图首次出现时启动:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
self.tickTockTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];
}
然后实现 timerFired
方法并在那里执行所需的操作。
- (void)timerFired:(NSTimer *)timer {
//change the image.
}
完成后不要忘记使计时器失效。
- (void) viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.timer invalidate];
self.timer = nil;
}
事情通常对我有用
NSDate *fireDate = [NSDate dateWithTimeIntervalSinceNow:2.0]; // 2 sec from now
NSTimer *self.timer = [[NSTimer alloc] initWithFireDate:fireDate interval:5 target:self selector:@selector(timerDidTick) userInfo:nil repeats:YES]; // fire 5 sec apart
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
[runLoop addTimer:self.timer forMode:NSDefaultRunLoopMode];