2016-11-28 1 views
0

나는 UICollectionView을 사용 중이며 사용자가 셀을 클릭 할 때 특정 프로세스가 실행됩니다. 이 프로세스는 몇 초 정도 걸릴 수 있으므로이 프로세스가 시작되자 마자 몇 가지 처리 메시지와 함께 사용자에게보기를 표시하려고합니다. 다음과 같이UICollectionView에서 주 스레드 호출 didSelectItemAt

일반적인 생각입니다 : 나에게 알 수없는 이유로

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 

    DispatchQueue.main.async { 
     self.someView.isHidden = false 
     print("showing processing message is about to start") 
    } 

    // some process runs here which may take a few seconds to finish 

    DispatchQueue.main.async { 
     self.someView.isHidden = true 
     print("hidding processing message") 
    } 

} 

을 메인 스레드에 그 전화는 didSelectItemAt 따라서 그 메시지를 처리하는 동시에 거의 사라지고, 완전히 완료 한 직후에 수행하는 것이 나타났다.

내가 누락 된 부분을 아는 사람이 있습니까?

감사합니다 :)

답변

0

당신이 당신의 질문에 설명 된 어떤이 코드에 정상을 기반으로 보인다는 사실 에 주 스레드에서 호출되고 때문에 사용자가 입력 한 냈다.

당신이 를 원하시면

이 프로세스가 완료에 숨길 수, 당신이 이 숨겨져되지 않은 상태에서 실행하려는 프로세스의 완료 폐쇄에 을 숨길 수있는 더 좋은 생각이 될 것입니다.

관련 문제