Ios Swift 3-隐藏元素

Ios Swift 3-隐藏元素,ios,iphone,swift,swift3,Ios,Iphone,Swift,Swift3,我试图用swift 3隐藏一个元素。如果元素在session.dataTask中,则该元素不会隐藏,但如果我将其移到session.dataTask之外,则该元素会很好地隐藏。是否可以在会话.dataTask中隐藏元素 @IBOutlet weak var login_box: UIStackView! let task = session.dataTask(with: request as URLRequest) { ( data, res

我试图用swift 3隐藏一个元素。如果元素在
session.dataTask
中,则该元素不会隐藏,但如果我将其移到
session.dataTask
之外,则该元素会很好地隐藏。是否可以在
会话.dataTask
中隐藏元素

@IBOutlet weak var login_box: UIStackView!



let task = session.dataTask(with: request as URLRequest) {
            (
            data, response, error) in

            guard let data = data, let _:URLResponse = response, error == nil else {
                print("error")
                return
            }

            //Following won't hide element
            self.login_box.isHidden = true
    }

//If placed here element hides fine
login_box.isHidden = true

task.resume()

首先,您需要使用
resume
启动
URLSessionDataTask
实例,并始终在
main
线程上执行
UI
更改

let task = session.dataTask(with: request as URLRequest) { (data, response, error) in
     guard let data = data, let _:URLResponse = response, error == nil else {
          print("error")
          return
     }

     DispatchQueue.main.async {              
          self.login_box.isHidden = true
     }
}
task.resume()

从服务器获得响应需要一些时间(取决于您的互联网速度),但是如果error不是nil,那么它将不会隐藏您的
登录框,因为它是从块返回的。

首先,您需要使用
resume
启动
URLSessionDataTask
实例,并始终在
main
线程上执行
UI
更改

let task = session.dataTask(with: request as URLRequest) { (data, response, error) in
     guard let data = data, let _:URLResponse = response, error == nil else {
          print("error")
          return
     }

     DispatchQueue.main.async {              
          self.login_box.isHidden = true
     }
}
task.resume()

从服务器获取响应需要一些时间(取决于您的互联网速度),但如果错误不是零,则不会隐藏您的
登录框,因为它是从块返回的。

很抱歉,我已恢复,只是没有放在示例中。@user2423476检查编辑后的答案,并将隐藏代码像我的答案一样放在主线程中。对不起,我有简历,只是没有放在示例中。@user2423476检查编辑后的答案,并像我的答案一样将隐藏代码放在主线程中。