2017-01-05 6 views
0

Ich versuche, ein Element mit swift 3 zu verstecken. Das Element wird nicht versteckt, wenn es in session.dataTask ist, aber wenn ich es außerhalb session.dataTask verschiebe, verbirgt sich das Element gut. Ist es möglich, ein Element in session.dataTask auszublenden?Swift 3 - Elemente ausblenden

@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() 

Antwort

2

allererst Sie URLSessionDataTask Instanz mit resume und immer durchführen UI Änderungen auf main Thread starten müssen.

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() 

Es wird einige Zeit erhalten Antwort vom Server nehmen (auf dem Internet-Geschwindigkeit abhängt), aber wenn Fehler nicht gleich Null ist, dann wird es nicht Ihre login_box verstecken, weil es Rückkehr aus dem Block ist.

+0

Sorry, ich hatte Lebenslauf, nur nicht im Beispiel. – user2423476

+1

@ user2423476 Überprüfen Sie die bearbeitete Antwort und legen Sie versteckten Code im Haupt-Thread wie meine Antwort. –