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

时间:2016-02-08 09:34:50

标签: ios swift gcdwebserver

我有这样的设置;

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秒之间。

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

4 个答案:

答案 0 :(得分:3)

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

dispatch_async(dispatch_get_main_queue(),{

    self.view.hidden = true;

 })

答案 1 :(得分:3)

尝试这个,在主线程上调用hidden。

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

答案 2 :(得分:3)

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

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

答案 3 :(得分:3)

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

 dispatch_async(dispatch_get_main_queue(),{

        self.view.hidden = true;

     })