2017-05-25 134 views
0

我正在使用集合視圖單元上的單擊來調用performSegue內部collectionView didSelectItemAt。有時特別是當應用程序首次啓動時,performSegue被延遲,不知道爲什麼和用戶再次點擊&。在這種情況下,performSegue被多次調用,並且多次推送新的視圖控制器(點擊數)。這種延遲的任何特定原因?如果不是,那麼我將不得不實施以下內容:UICollectionView防止多次輕擊/調用didSelectItemAt

var alreadyTapped = false 
override func viewDidAppear(_ animated: Bool) { 
    alreadyTapped = false 
} 
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    if alreadyTapped { return } 
    alreadyTapped = true 
    performSegue(withIdentifier: Constants.Segue.DETAIL_VC, sender: collectionView.cellForItem(at: indexPath)) 
} 

或者如果有更好的方法來解決這個問題?

回答

2

嘗試下面的代碼,

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
     DispatchQueue.main.async { 
      performSegue(withIdentifier: Constants.Segue.DETAIL_VC, sender: collectionView.cellForItem(at: indexPath)) 
     } 
    } 
+0

不是 'didSelectItemAt' 已經被呼籲主線程?它也沒有爲我工作。 –