0

ich UIActivityIndicatorView in meinem projet verwenden, aber es funktioniert nicht, ist der Nachfolger mein Code:UIActivityIndicatorView nicht im Modus funktioniert dispatch_sync

let globalQueueDefault = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0) 

    dispatch_sync(globalQueueDefault){ 

     self.activityIndicatorView.hidden = false 
     self.activityIndicatorView.startAnimating() 

      self.connect() 

      sleep(6) 
      dispatch_sync(globalQueueDefault) {() -> Void in 

       self.activityIndicatorView.stopAnimating() 
       self.activityIndicatorView.hidden = true            
      } 
    } 

ich versucht habe dispatch_sync und dispatch_async ... aber es funktioniert nicht Arbeit.

Antwort

3

Wenn Sie diese Warteschlange verwenden, werden Sie aufgefordert, den Code im Hintergrund auszuführen, der UI-Code sollte nur im Hauptthread ausgeführt werden.

Wrapping Sie activityView in

dispatch_async(dispatch_get_main_queue(), {() -> Void in 

}) 

diesen Code setzen wird wieder auf dem Hauptthread wie sollte wie erwartet funktionieren.

Der überarbeitete Code so etwas wie

aussehen sollte

lassen globalQueueDefault = dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)

dispatch_async(dispatch_get_main_queue(), {() -> Void in 

    self.activityIndicatorView.hidden = false 
    self.activityIndicatorView.startAnimating() 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { [weak self]() -> Void in 
     self?.connect() 

      sleep(6) 

    }) 

    dispatch_async(dispatch_get_main_queue(), {() -> Void in 

     self.activityIndicatorView.stopAnimating() 
     self.activityIndicatorView.hidden = true            
    } 
} 
+0

Dank für Ihre Antwort danken, ich Ihren Code versucht, ich denke, es ist wie follow'dispatch_sync (globalQueueDefault) { self.activityIndicatorView.hidden = false self.activityIndicatorView.startAnimating() self.connect() Schlaf (6) dispatch_sync (dispatch_get_main_queue()) {() -> Void in self.activityIndicatorView.stopAnimating() self.activityIndicatorView.hidden = true } } ' – user2262304

+0

Hallo, ich Ihren Code versucht, aber es funktioniert nicht, und das 'self.connect()' funktioniert auch nicht, ich denke der Kabeljau e ist in einem toten Block ....? – user2262304

+0

bitte überprüfen Sie die Revision – SeanLintern88

0

UIKit beschäftigt sich im Allgemeinen mit von der Main-Thread. Wenn Sie also versuchen, Ihre UI zu aktualisieren, sollten Sie UI-bezogenen Code wie unten dargestellt in den Hauptthread einfügen.

dispatch_async(dispatch_get_main_queue(), ^{ 
     // All UI related code goes here... 
     // I am adding few part of your code here.. Please update this according to your requirement. 
     self.activityIndicatorView.stopAnimating() 
     self.activityIndicatorView.hidden = true 
     }); 
+0

Vielen Dank für Ihre Antwort – user2262304

+0

Vielen Dank für Ihre Antwort, Ihre Antwort ist richtig, aber SeanLintern88 geben Sie mir mehr Informationen, ich werde ihn auffrischen, werde ich Ihnen das nächste Mal upvote, Vielen Dank für Sie antworte nochmal :) – user2262304

Verwandte Themen