【发布时间】:2015-07-12 06:23:23
【问题描述】:
我有一个复杂的计算表,一年中的每一天都在循环。在每天的循环结束时,我想更新屏幕。这些都是 myLabel.text 输出。 view.setNeedsDisplay() 不起作用。我需要在外部调用它还是使用其他东西?例如
for var day = 1; day < 366; day++ {
dayLabel.text = String(format: "%i", day)
view.setNeedsDisplay()
}
【问题讨论】:
-
您应该不需要那里的 setNeedsDisplay - 更改标签文本应该足以触发视图更改。这是 Swift 的一个添加寻找循环 - 除非你知道更好地尝试 'for day in 1...365 {'
-
按下按钮时调用此函数 (IBAction)。基本上你必须强制显示更新,否则它只会在循环完成时更新。 view.setNeedsDisplay 和 testLabel.setNeedsDisplay() 不这样做。在 Cocoa 中,这种方法是曲折的: [self performSelectorOnMainThread:@selector(updateDisplayEnergySunEquator:) withObject:[NSNumber numberWithDouble:distanceFromSun] waitUntilDone:YES];
-
好的。你能确认“for循环”的Objective C风格在Swift中有效吗?它实际上循环了 365 次?
-
如果我输入一个 NSLog() 行,那么 NSLog 会实时打印。然而,UILabel 仅在循环结束时更新。
-
好的,所以这一切都是红鲱鱼 - 对此感到抱歉。所以也许是线程问题或只是速度问题,如大纲in this SO answer?
标签: swift setneedsdisplay