UILabel显示的是最后一个值,但不是我提供输入的所有值

时间:2013-03-21 12:01:28

标签: ios uilabel

我的UILabel每次都不刷新,只刷新最后一个值。我想在UILabel中打印所有值。

for (int i=0; i<4; i++) {
    lblText.text=[NSString stringWithFormat:@"%i",i];
sleep(1.2);
}

4 个答案:

答案 0 :(得分:3)

你正在重写这些价值观。您需要创建一个新的数组,每次迭代都附加新值。

而且,不要在主线程中使用sleep。这就是UI阻止

答案 1 :(得分:2)

如果您想在一定时间内更改标签文字间隔,为什么不使用NSTimer

    _timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(changeText) userInfo:nil repeats:YES];
    _loopTime = 0;


- (void)changeText
{
    lblText.text=[NSString stringWithFormat:@"%i",_loopTime++];
    if(_loopTime >= 3)
    {
        [_timer invalidate];
    }
}

答案 2 :(得分:1)

不要在主线程中使用sleep()。因为它会冻结UI。使用performSelector: afterDelay:调用函数(您自己的)将更新标签

中的文本

答案 3 :(得分:1)

Amit ..我不确定,但根据我的iOS重绘两个方法执行之间的屏幕。并且仅重新绘制最新值。实现柜台。你需要纠正一个方法并按如下方式启动一个计时器。

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.2
                                                            target:self
                                                          selector:@selector(counter:)
                                                          userInfo:[NSNumber numberWithInt:i]
                                                           repeats:YES];

这是一种反方法。

-(void) counter:(NSNumber)count
{

    if(count == 4)
    {
      [timer invalidate]; timer = nil;
    }
    lblText.text=[NSString stringWithFormat:@"%i",count];
    //increment the counter
    i++;
}

希望这有帮助。