2017-01-11 4 views
0

다른 뷰 컨트롤러에있는 다른 imageView.image에 이미지를 추가하려고합니다. 즉, segue를 준비/준비하지만 변수를 시도 할 때 bg 스레드에서 주 스레드로 이동하여 업데이트하면 작동하지 않습니다. 하지만 파견 물건을 제거하면 작동합니다. 코드는 다음과 같습니다.segue를 수행 할 때 주 스레드에서 UI가 업데이트되지 않음

+1

배경 스레드의 컬렉션보기에 액세스하려고 할 때 뭔가 관련이 있지만이 방법으로 걱정하지 않아도된다면 놀랄 일이 아닙니다. 대신 URL을 PhotoViewController에 전달해야하며 이미지를 다운로드해야하므로 prepareForSegue 메서드에서 수행하면 안됩니다. – dlbuckley

+0

DispatchQueue.global 및 DispatchQueue.main.async를 제거하면 왜 작동합니까? –

+0

아마도 주 스레드에서 collectionView에 액세스하고 있기 때문일 수 있습니다. 위의 내 대답을 참조하십시오) – dlbuckley

답변

0

이 경우에는 KingFisher을 권장합니다. 모든 정크가 걸리며 다음으로 바뀝니다.

. . . 
let cell = sender as! UICollectionViewCell 
let url = URL(string: self.images[indexPath.row].rawURL) 
vc.imageView.kf.setImage(with: url) 
. . . 

그래. @ dlbuckley가 옳다. KingFisher와 같은 일을하지 않으면 prepareForSegue에서 그런 일을하지 마십시오.

+1

예. Nuke를 사용하여 이미지를로드하면 효과가있었습니다. 감사 :) –