2015-03-17 9 views
6

pracuję nad ProgressView w Swiftwidok Postęp nie jest aktualizowanie - Swift

Oto mój kod

var request = HTTPTask() 
      let downloadTask = request.download(urlm!, parameters: nil, progress: {(complete: Double) in 
       println("percent complete: \(Float(complete))") 
       self.Progress.setProgress(Float(complete), animated: true) 

Nawet complete daje to wyjście

percent complete: 0.00480848 
percent complete: 0.0089619 
percent complete: 0.0132512 
percent complete: 0.0175405 
percent complete: 0.0221036 
percent complete: 0.0264841 
percent complete: 0.0308647 
percent complete: 0.0350627 
percent complete: 0.0392608 
percent complete: 0.0434588 
percent complete: 0.0513073 
percent complete: 0.0555054 
percent complete: 0.0598859 
percent complete: 0.0642665 
percent complete: 0.0688296 
percent complete: 0.0731189 
percent complete: 0.0774994 
percent complete: 0.0817887 
percent complete: 0.0861693 
percent complete: 0.0908237 
percent complete: 0.095478 
percent complete: 0.099676 
percent complete: 0.104057 
percent complete: 0.109624 
percent complete: 0.114278 
percent complete: 0.119024 
percent complete: 0.123404 
percent complete: 0.127602 
percent complete: 0.131983 
percent complete: 0.136181 
percent complete: 0.136408 
percent complete: 0.140561 
percent complete: 0.144759 
percent complete: 0.148957 
percent complete: 0.153155 
percent complete: 0.157901 
percent complete: 0.162282 
percent complete: 0.166662 
percent complete: 0.171043 
percent complete: 0.175241 
percent complete: 0.175468 
percent complete: 0.179621 
percent complete: 0.184002 
percent complete: 0.188291 
percent complete: 0.192672 
percent complete: 0.197052 
percent complete: 0.201524 
percent complete: 0.205905 
percent complete: 0.210285 
percent complete: 0.21494 
percent complete: 0.215258 
... 
percent complete: 1.0 

To nie aktualizuje postęp zobacz tutaj

self.Progress.setProgress(Float(complete), animated: true) 
+0

Gdzie tworzysz zmienną 'Progress'? – Jojodmo

+0

to jest framework o nazwie SwiftHTTP –

+0

czy dodano widok do swojego superview? 'self.view.addSubview (self.Progress)' – Jojodmo

Odpowiedz

10

Aktualizacja dla Swift 3

Zmiany w interfejsie powinna zawsze występować na głównej/planie wątku, w tym przypadku dzieje się w kolejce w tle. Użyj:

DispatchQueue.main.async { 
    self.Progress.setProgress(Float(complete), animated: true) 
} 

, aby przenieść go na pierwszy plan.

Old Odpowiedź na pre-Swift 3

Zmiany w interfejsie powinna zawsze występować na głównej/planie wątku, w tym przypadku dzieje się w kolejce w tle. Użyj:

dispatch_async(dispatch_get_main_queue()) { 
    self.Progress.setProgress(Float(complete), animated: true) 
} 

, aby przenieść go na pierwszy plan.

+1

¿A skąd mam wiedzieć, że pobieranie nie miało miejsca w głównym wątku? – MatiEzelQ

+0

Krótka odpowiedź brzmi: "nie obchodzi cię, jeśli zawsze przenosisz ją na pierwszy plan, jesteś bezpieczny". –

+0

@MatiEzelQ Miałem zamiar zadać to samo pytanie. Dzięki, że pytasz! – user30646