Swift 3 - 隐藏元素 [英] Swift 3 - Hide Elements
问题描述
我正在尝试使用 swift 3 隐藏一个元素.如果它在 session.dataTask
中,该元素将不会隐藏,但是如果我将它移到 session.dataTask
之外元素隐藏得很好.是否可以隐藏 session.dataTask
中的元素?
@IBOutlet 弱变量 login_box:UIStackView!let task = session.dataTask(with: request as URLRequest) {(数据、响应、错误)在守卫让数据 = 数据,让 _:URLResponse = 响应,错误 == 零其他 {打印(错误")返回}//以下不会隐藏元素self.login_box.isHidden = 真}//如果放在这里元素隐藏得很好login_box.isHidden = 真任务.resume()
首先你需要使用 resume
启动 URLSessionDataTask
实例并始终执行 UI
main
线程上的更改.
let task = session.dataTask(with: request as URLRequest) { (data, response, error) in守卫让数据 = 数据,让 _:URLResponse = 响应,错误 == 零其他 {打印(错误")返回}DispatchQueue.main.async {self.login_box.isHidden = 真}}任务.resume()
从服务器获得响应需要一些时间(取决于您的互联网速度),但如果错误不是零,那么它不会隐藏您的 login_box
,因为它是从块中返回的.>
Im trying to hide a element using swift 3. The element won't hide if its in session.dataTask
, but if I move it outside session.dataTask
the element hides fine. Is it possible to hide a element in session.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()
First of all you need to start URLSessionDataTask
instance using resume
and always perform UI
changes on main
thread.
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()
It will take some time get response from server (depends on your internet speed), but if error is not nil then it will not hide your login_box
because it is return from the block.
这篇关于Swift 3 - 隐藏元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!