手动更新UI

时间:2010-08-24 15:56:03

标签: objective-c iphone cocoa-touch xcode

有没有办法手动更新UI? 例如,我有一个更新UI并执行一些逻辑的函数。 在UI更新之后,它将执行一些需要很长时间的逻辑,并且UI的更新必须等到逻辑执行完成。 有没有办法手动更新UI甚至逻辑甚至执行?

似乎可以在这里使用线程。 但有没有办法通过不使用线程来解决这个问题? 另外,使用if线程可以使用,最佳做法是什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

因为UI线程是你的应用程序的主线程,所以在它上面处理大型操作通常不是一个好主意,因为你在此期间冻结了你的UI(这不是用户友好的)。

使用线程的方式取决于你想要做什么,例如你可以使用- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg,或者你可以创建自己的线程并且更具体。

如果您想从其他线程对UI进行一些更改,请不要忘记调用- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait

您可以在iOS参考资料库的guide中找到有关线程编程的所有信息。

希望这有帮助!

答案 1 :(得分:0)

你在想一个简单的进度条吗?如果是这种情况,那么您可以使用NSApp(参见管理事件循环部分)并使用runModalForWindow:和runModalSession:这些将允许您打开进度面板,报告状态并允许方法取消操作

由于操作是模态操作,因此在关闭面板之前,其他UI元素将被停用。