2016-06-27 1 views
1

J'ai un popup qui doit être affiché jusqu'à ce que toutes les images soient téléchargées sur le contrôleur de vue, j'utilise la méthode dispatch-async pour montrer le popup avant que toutes les images soient téléchargées et masquer lorsque les images s'affichent.Le gel de l'écran UIView lors de l'appel de dispatch_async (dispatch_get_main_queue())

Mais l'écran UIView fige l'affichage de hang popup sur l'appel dispatch_async méthode où j'ai eu tort dans le code ou quel est le meilleur moyen d'y parvenir.

func imageIconTapped(gesture: UITapGestureRecognizer){ 
     self.loadingPopUp = showPopUp(self, txt: “Processing..") 
     self.navigationController!.view.addSubview(self.loadingPopUp!) 

     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { 

      code to getting the image // getting the images is time taking therefore it work in the background. 

      dispatch_async(dispatch_get_main_queue()) {     

     method to upload the images on the view controller and hide the popup.    
     } 
+0

Nous ne pouvons pas dire pourquoi cela prend si longtemps, sans voir ce que vous faites avec l'image. Pouvez-vous poster le reste de votre code? –

+0

En fait, j'ai besoin de montrer pop-up lorsque les images ne sont pas téléchargées, popup show mais uiview se fige quand dispatch_async (dispatch_get_main_queue) est appel et voici la méthode pour envoyer les images. – fmashkoor

+0

Merci pour votre réponse rapide, c'est résolu maintenant. – fmashkoor

Répondre

-1

La fonction « imageIconTapped » est la méthode UIKit qui est déjà exécuté sur la principale thread.So pas besoin d'envoyer le code à la file d'attente principale.

Le thread principal est bloqué lorsque vous envoyez du code du thread principal à la file d'attente principale.