0

我正在制作一个 Simon Says 应用程序来了解有关 Objective C 的更多信息。

我的 SimonSaysViewController 有 4 个按钮。当向用户显示图案时,他们的图像需要相应地改变。

固定间隔计时器绝对没问题。

我似乎找不到一个例子。

我基本上想要一种设置,例如:

当我可以执行图像交换逻辑时的 TimerTicked 回调。

理想情况下,TimerTicked 方法将是我的 SimonSaysViewController 的方法。

这将如何完成?

谢谢

4

2 回答 2

3

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;
}
于 2013-11-13T22:22:27.920 回答
0

这种事情通常对我有用

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];
于 2013-11-13T22:19:39.303 回答