Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在循环中更新UILabel?_Objective C - Fatal编程技术网

Objective c 在循环中更新UILabel?

Objective c 在循环中更新UILabel?,objective-c,Objective C,我希望屏幕显示以下示例代码每次迭代的编号?? 此代码显示最后一次迭代次数,而不考虑使用暂停 for(int i = 0; i<10; i++){ [lbl setText:[NSString stringWithFormat:@"%d", i]]; } for(int i=0;i您应该设置一个计时器来处理标签的更新。现在整个循环在几分之一秒内发生 NSTimer * aTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 targ

我希望屏幕显示以下示例代码每次迭代的编号?? 此代码显示最后一次迭代次数,而不考虑使用暂停

for(int i = 0; i<10; i++){
    [lbl setText:[NSString stringWithFormat:@"%d", i]];
}

for(int i=0;i您应该设置一个计时器来处理标签的更新。现在整个循环在几分之一秒内发生

NSTimer * aTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateTimerLabel) userInfo:nil repeats:YES];

-(void)updateTimerLabel {
    static int i = 0;

    [lbl setText:[NSString stringWithFormat:@"%d", i++];
}

这样,您的标签应该每秒更新一次。

它的迭代速度可能太快,您看不到更改。您希望看到什么样的行为?比如10秒后数到10?这是一个例子…我可以在其中暂停…没有区别请您进一步澄清一下?还有,这是在网络上发生的吗主线程?对UI元素的所有更新都必须在主线程上进行。问题是,直到下一次运行循环开始,直到您执行的代码完成,才真正对UI元素进行更新。因此,您可以随心所欲地更新text属性,但除非在之后使用NSTimer或dispatch_,否则它将只接受最后一个值。如果您正在寻找一种快速增长的“闪烁”标签从0到10,使用下面的解决方案,但时间间隔很短。这是对的,但问题不是它发生得太快,而是在控件返回到UI线程之前,界面的更改不会出现,换句话说,直到你的代码停止工作。但他显然不关心这一点,上面的代码正是你想要的你正在寻找。如果你有一个while循环监听TCP套接字,它应该发生在一个专用于它的后台线程中,让你在主线程上更新UI。但是你发布的代码与此无关,它变得非常混乱。