2017-01-10 3 views
0

Pour une raison quelconque, mon NSCollectionView (qui utilise une mise en page personnalisée que j'ai écrit) appelle collectionView(_:didSelectItemsAt:) de son délégué fonction lorsque je clique sur un élément, mais pas collectionView(_:didDeselectItemsAt:) de ce même délégué lorsque je clique sur off il.CollectionView (_: didDeselectItemsAt :) est jamais appelé

Voici ma configuration de base:

class MyCollectionViewContainer: NSViewController { 
    fileprivate lazy var collectionView: NSCollectionView = { 
     let collectionView = NSCollectionView() 
     collectionView.delegate = self 
     collectionView.dataSource = self 

     collectionView.collectionViewLayout = self.customLayout 
     collectionView.isSelectable = true 
     collectionView.allowsEmptySelection = true 
     collectionView.allowsMultipleSelection = false 
    }() 
} 

extension MyCollectionViewContainer: NSCollectionViewDelegate { 

    func collectionView(_ collectionView: NSCollectionView, didSelectItemsAt indexPaths: Set<IndexPath>) { 

     print("Selected", indexPaths) 

     // Mutate data to reflect that selection 
    } 

    func collectionView(_ collectionView: NSCollectionView, didDeselectItemsAt indexPaths: Set<IndexPath>) { 
     print("Deselected", indexPaths) 
    } 
} 

« Désélectionné » est jamais imprimé ...:/

+0

connexes: [NSCollectionView désélectionner sélection multiple] (https://stackoverflow.com/questions/40472377/nscollectionview-deselect-multiple-selection) –

Répondre

0

Ainsi, il se ma mise en page n'a pas été d'ajouter des vues supplémentaires de type NSCollectionElementKindInterItemGapIndicator; Apparemment, c'est la vue que la vue de collection utilise pour détecter lorsque vous cliquez sur un élément. Ma solution rapide était d'en ajouter une énorme à ma mise en page qui couvre toute la vue de la collection, et de rendre son index Z inférieur à celui de tous les autres éléments et vues supplémentaires.

-1

Nous avons besoin de définir un objet NSCollectionView sélectionné:

collectionview.isSelectable = true 
+0

Cela semble pour être juste une ligne de code de ma question –

+0

J'ai eu le même problème avec mon code donc avec l'aide du code de ligne ci-dessus mon problème a résolu – user1374

+0

Ensuite, vous devriez poser une nouvelle question, poster votre mauvais code, et y répondre avec cette correction vous avez trouvé. Votre réponse n'aide pas ma question. –