在@IBAction完成之前,视图/窗口不会更新

时间:2017-11-11 22:33:44

标签: swift macos ibaction

我有一个链接到IBAction的按钮,大约需要5-10秒才能完成。 当IBAction函数正在运行时,我想在视图/窗口中打印进度消息。 打印的唯一消息是最后一个消息,它在IBAction完成后打印(即按钮不是蓝色)。 当我在调试器中单步执行该函数时,在我退出函数之前没有消息可见(即按钮不是蓝色)。

在执行回调时如何更新窗口?

1 个答案:

答案 0 :(得分:1)

将IBAction逻辑嵌入后台队列:

DispatchQueue.global(qos: .background).async {
   // background code
}

随时您需要在视图/窗口中打印进度,将该部分嵌入其中:

DispatchQueue.main.async {
   // user interface code
}    

通常你可能想试试这个:

DispatchQueue.global(qos: .background).async {
   //background code

   DispatchQueue.main.async {
     //your main thread
   }    
}