-1

我目前正在开发一个应用程序,该应用程序将显示一个从零开始的标签,并计数到我指定的数字。我想用一个像这样的简单循环来做到这一点。

  for (counterInt = 0; counterInt < 10; counterInt++) 
    {
        NSLog(@"%i",counterInt); 
    }

问题是,这个循环的执行时间比视图出现在屏幕上的时间要短。在视图最终加载显示 9 的标签之前,我的控制台记录了 1-9。我已经研究了几个小时,试图找到一种方法来指定循环的持续时间,但我似乎找不到任何东西.

所以我的总体问题是,是否可以指定循环执行需要多长时间?如果是这样,如果有人能在这里指出我正确的方向,将不胜感激!

4

3 回答 3

7

即使你放慢了循环,它仍然无法工作。UI 元素仅在运行循环结束时更新。您需要设置一个计时器并在计时器触发的方法中更新标签。

于 2012-05-31T21:27:10.473 回答
4

你使用了错误的方法。试试 NSTimer。

[NSTimer scheduledTimerWithTimeInterval:5.0
    target:self
    selector:@selector(incrementLabel:)
    userInfo:nil
    repeats:YES];

然后创建一个名为 incrementLabel 的方法,让它增加一个实例变量并相应地更新标签。

于 2012-05-31T21:30:09.897 回答
1

你可以休眠一个线程:

[NSThread sleepForTimeInterval:1];

但是,jrturton 和 james 提供了正确的方法。我会将 James 的代码放在 viewDidAppear 方法中,以便您的标签从您想要的位置开始,并且在视图出现时开始计数器。

于 2012-05-31T21:38:52.660 回答