我是iphone dev的新手,在阅读Apress.Beginning.Iphone4.Dev的过程中,不知道这是否是开发iphone应用程序的最佳方式。 好吧,我目前在第4章,我已经完成了示例代码的实现,但我想添加一点mod。
如果按下,Touch Up Inside,将开始更改
self.view.backgroundColor
随机值100次
在for循环中。
我的问题是只有在IBAction连接到按钮后才会改变背景 迪斯科,完成,所以我只能看到一个颜色变化而不是至少2个颜色变化。
我的怀疑是,在IBAction完成之前,视图没有刷新/重新加载,这种怀疑是否正确?
是否可以实现我希望实现的功能, - 触摸按钮 - 背景颜色随机变化100次。
先谢谢你,抱歉这个新问题。 timex88
========================
谢谢大家,感谢您的指示,我得到了这份工作。而不是100次,
我让changeBgColor
方法无限期地运行。
我注意到的是,changeBgColor
仍在运行,如果我要触摸迪斯科舞厅
再次按钮,正在执行的changeBgColor
方法的比率变得更高,有人可以解释原因吗?
再次感谢 timex 88
答案 0 :(得分:1)
- (IBAction)changeColor:(id)sender
{
if (_timer == nil)
{
_changeColorCount = 0;
_timer = [NSTimer scheduledTimerWithTimeInterval:0.2
target:self
selector:@selector(colorTimerFired)
userInfo:nil
repeats:YES];
}
}
- (void)colorTimerFired
{
if (_changeColorCount > 100)
{
[_timer invalidate];
_timer = nil;
}
else
{
[view setBackgroundColor:newRandomColor];
_changeColorCount++;
}
}
答案 1 :(得分:0)
您可以更改方法中的颜色&使用NSTimer.set为NSTimer重复调用此方法为YES。然后再次调用您的方法&再次
答案 2 :(得分:0)
在迪斯科按钮上点击代码编写
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1
target:self
selector:@selector(changeColor)
userInfo:nil
repeats:YES];
现在制作一个新方法如下,
在int i
文件中声明.h
并在viewDidLoad
中初始化为0。
- (void) changeColor
{
// code for color change;
i++;
if (i==100)
{
[timer invalidate];
}
}