0

私はこのような設定をしています。

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

4 に答える 4

3

メインスレッドでhiddenを呼び出して、これを試してください。

dispatch_async(dispatch_get_main_queue(),{
   self.view.hidden = true;
})
于 2016-02-08T09:39:27.613 に答える
3

hide以下のようにメソッドを書き直してください。メイン スレッドでのみ UI を更新する必要があります。

func hide() -> GCDWebServerDataResponse {
    dispatch_async(dispatch_get_main_queue(),{
        self.view.hidden = true
    })
    print("hide")
    return GCDWebServerDataResponse(statusCode: 200)
}
于 2016-02-08T09:40:09.683 に答える
3

UI 更新コードは、メイン スレッドのみに記述します。

 dispatch_async(dispatch_get_main_queue(),{

        self.view.hidden = true;

     })
于 2016-02-08T09:45:48.357 に答える
3

UI 関連のログインをディスパッチ async 内にラップし、メイン スレッドで実行します。

dispatch_async(dispatch_get_main_queue(),{

    self.view.hidden = true;

 })
于 2016-02-08T09:38:29.383 に答える