我的UILabel
每次都不刷新,只刷新最后一个值。我想在UILabel
中打印所有值。
for (int i=0; i<4; i++) {
lblText.text=[NSString stringWithFormat:@"%i",i];
sleep(1.2);
}
答案 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++;
}
希望这有帮助。