假设我有十行代码,
1
2
[addressStreet setStringValue:street]
4
5
6
7
8
9
10
其中addressStreet是指向UI和文本字段的IBOutlet street是一个NSString对象。
只有在执行了所有10行之后,我才能在UI中看到更新的值。我的要求是,在执行第3行之后,甚至在执行下一行(No 4)之前,该值应立即反映在UI中。
也试过绑定!负
我有办法实现这个目标吗?
提前Thanx!
答案 0 :(得分:2)
当您返回UI循环时,该字段会重绘。你的问题是你要花太长时间才能做到这一点。所以,不要这么久。
有很多方法可以做到这一点:
大多数这些都不适合你的情况,但我不知道你的情况是什么(即,所有其他代码行正在做什么),所以我不知道哪些解决方案是合适的,哪些解决方案不适合“T。你必须研究所有这些解决方案,并自己决定哪一个是最合适的。
简单地告诉现场立即绘制不是解决方案。是的,它立即绘制,但您的用户界面仍然被阻止 - 在您从方法返回之前,您的用户无法执行任何操作,并且仅解决方案将更快返回。一旦你这样做,告诉现场立即绘制就变得没必要了。
答案 1 :(得分:1)
一般情况下,如果你有一些非常长时间运行的计算会阻止你的UI,那么将它分解成块或者在第二个线程上运行它是个好主意。只要这种方法堵塞主线程,用户就无法与任何东西进行交互。
然而,您问题的直接答案是您需要告诉该字段重绘自己。通常情况下,它会在下一个事件循环中执行此操作,但由于该方法会阻止它出现,所以它不会发生。您可以通过调用[view display]
来告知要重绘的视图。