Swift 3 - 隐藏元素 [英] Swift 3 - Hide Elements

查看:27
本文介绍了Swift 3 - 隐藏元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆