更新 UI 作为请求处理程序的结果



我有这样的设置;

startup() {
    ...
    self.gcdWebServer.addHandlerForMethod("GET", path: "/hide", 
        requestClass: GCDWebServerRequest.self, asyncProcessBlock: {request in self.hide()})
    ...
}
func hide() -> GCDWebServerDataResponse {
    self.view.hidden = true;
    print("hide")
    return GCDWebServerDataResponse(statusCode: 200)
}

发出/hide请求时,控制台会立即显示print()调用,但视图不会因某些任意延迟(介于 10-30 秒之间)而消失。

如何让请求立即导致视图被隐藏?

试试这个,在主线程上调用隐藏。

dispatch_async(dispatch_get_main_queue(),{
   self.view.hidden = true;
})

将您与 UI 相关的登录包装在调度异步中并在主线程上运行它:

dispatch_async(dispatch_get_main_queue(),{
    self.view.hidden = true;
 })

重写您的hide方法,如下所示。您只需要在主线程上更新 UI。

func hide() -> GCDWebServerDataResponse {
    dispatch_async(dispatch_get_main_queue(),{
        self.view.hidden = true
    })
    print("hide")
    return GCDWebServerDataResponse(statusCode: 200)
}

UI 更新代码仅在主线程中编写。

 dispatch_async(dispatch_get_main_queue(),{
        self.view.hidden = true;
     })

相关内容

  • 没有找到相关文章

最新更新