我目前正在处理一个应用程序,该应用程序将显示一个从零开始的标签,并计入我指定的数字。我想使用像这样的简单循环来做到这一点。
for (counterInt = 0; counterInt < 10; counterInt++)
{
NSLog(@"%i",counterInt);
}
问题是,这个循环执行的时间比视图在屏幕上显示的时间短。我的控制台在视图最终加载之前记录1-9,标签显示为9.我已经研究了几个小时试图找到一种方法来指定循环的持续时间,我似乎无法找到任何事情都可以。
所以我的整体问题是,是否可以指定循环执行需要多长时间?如果是这样,如果有人能指出我在这里正确的方向,那将非常感谢!
答案 0 :(得分:7)
即使你放慢了循环,它仍然无法正常工作。 UI元素仅在运行循环结束时更新。您需要设置timer并更新计时器触发的方法中的标签。
答案 1 :(得分:4)
你使用了错误的方法。试试NSTimer。
[NSTimer scheduledTimerWithTimeInterval:5.0
target:self
selector:@selector(incrementLabel:)
userInfo:nil
repeats:YES];
然后创建一个名为incrementLabel的方法,让它递增一个实例变量并相应地更新标签。
答案 2 :(得分:1)
你可以睡一个帖子:
[NSThread sleepForTimeInterval:1];
然而,jrturton和詹姆斯提供了正确的方法。我会将James的代码放在viewDidAppear方法中,这样你的标签就会在你想要的地方开始,当视图出现时,计数器就会开始。