我是一名 iOS 开发人员,目前正在开发 iPhone 应用程序。我有一个关于更新 ViewController 内容的简单问题,如果我能得到了解此问题的人的反馈或有建议的解决方案,我将不胜感激。
我正在编写一种方法,不断更新标签的文本(以及其他组件,例如 UIImage “box1” 和 “box2” 的背景颜色)。
问题:对标签文本的更新(以及其他更改)仅在代码执行结束时生效。所以我写了一个简单的无限循环,如下所示:
-(void) stateTest{
int i=0;
for(;;){
if (i==5) {
self.stateLabel.text=@"Opened"; //stateLabel previously declared
[self.box2 setBackgroundColor:[UIColor whiteColor]]; // box2 declared as UIImage
[self.box1 setBackgroundColor:[UIColor purpleColor]];
}
if (i==10){
self.stateLabel.text=@"Closed";
[self.box2 setBackgroundColor:[UIColor redColor]];
[self.box1 setBackgroundColor:[UIColor whiteColor]];
break;
}
i++;
}
}
在 viewDidLoad 方法中:
- (void)viewDidLoad
{
[super viewDidLoad];
self.stateLabel.text=@“View did Load";
[self.box1 setBackgroundColor:[UIColorwhiteColor]];
[self.box2 setBackgroundColor:[UIColorwhiteColor]];
[self stateTest];
}
我正在单步执行代码(断点),这是我面临的问题:
- 当 i==5 时,标签文本不会更新(与框的颜色相同)
- 当 i==10 时,标签文本不会更新
- 代码执行完毕后会显示更新(标签文本和框颜色)
状态标签:“已关闭”,
方框2:红色背景色
我尝试在 stateTest 方法末尾(在 i++ 之后)调用几个函数,希望它能够“REFRESH” 视图、标签和/或 UIImage 的内容:
[self.stateLabel setNeedsLayout];
[self.stateLabel setNeedsDisplay];
[self.box1 setNeedsDisplay];
[self.box2 setNeedsDisplay];
[self.view setNeedsDisplay];
不幸的是,这些试验都没有奏效。我还放置了一个 NSLog 来输出标签的文本,并且效果很好,如我所愿。但问题在于在执行代码/方法期间视图控制器内容的动态更新。
我将非常感谢任何帮助,并且我愿意接受任何建议
Ideally,该代码与检测嘴部状态的人脸检测算法并行使用。有一个 processImage 方法可以每帧处理图像。每次处理图像时我都会调用[self stateTest];如果嘴张开 → stateLabel.text=@”Open”...等
预先感谢您的贡献
干杯!