我正在创建一个记忆游戏,并希望在 for 循环中每次迭代更改四个按钮的图像。实际发生的是在循环的最后一次迭代之前什么都没有发生。
按下按钮时:
- (IBAction)bNewRound:(id)sender {
for (int i = 0; i < 10; i++) {
numbers1[i] = arc4random()%4+1;
NSLog(@"%i: %i", i, numbers1[i]);
if (numbers1[i] == 1) {
[self b1On];
}
if (numbers1[i] == 2) {
[self b2On];
}
if (numbers1[i] == 3) {
[self b3On];
}
if (numbers1[i] == 4) {
[self b4On];
}
sleep(1);
}
}
更改按钮图像的方法:
- (void)b1On {
NSLog(@"b1 state1");
[self.button1 setBackgroundImage:[UIImage imageNamed:@"memory_green.png"] forState: UIControlStateNormal];
bool1 = FALSE;
[self b2Off];
[self b3Off];
[self b4Off];
}
- (void)b1Off {
// NSLog(@"b1 state2");
[self.button1 setBackgroundImage:[UIImage imageNamed:@"memory_grey.png"] forState: UIControlStateNormal];
bool1 = TRUE;
}
(仅适用于按钮 1,但你明白了)
我遵循日志中的代码,一切正常,每秒生成一个新数字并保存在数组中,b1On 方法(或 b2On、b3On 等)运行但行
[self.button1 setBackgroundImage:[UIImage imageNamed:@"memory_green.png"] forState: UIControlStateNormal];
每次迭代都不会改变图像。但是当 for 循环结束时,数组中的最后一个(随机)按钮将颜色变为绿色。
为什么 for 循环的每次迭代都没有更新图像?
谢谢