2017-01-10 5 views
0

Aus irgendeinem Grund genannt, mein NSCollectionView (die einen benutzerdefinierten Layout verwendet, die ich geschrieben habe) ruft collectionView(_:didSelectItemsAt:) Funktion seines Beauftragten, wenn ich auf ein Element klicken, aber nicht das gleiche Delegierten collectionView(_:didDeselectItemsAt:) ist, wenn ich weg klicken es.Kollektion (_: didDeselectItemsAt :) wird nie

Hier ist meine Grundeinstellung:

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) 
    } 
} 

"abgewählt" nie gedruckt wird ...:/

+0

Verwandte: [NSCollectionView deaktivieren Mehrfachauswahl] (https://stackoverflow.com/questions/40472377/nscollectionview-deselect-multiple-selection) –

Antwort

0

So stellt ich mein Layout keine zusätzliche Ansichten des Typs aus wurde das Hinzufügen NSCollectionElementKindInterItemGapIndicator; Dies ist offenbar die Ansicht, die in der Sammlungsansicht verwendet wird, um zu erkennen, wenn Sie auf ein Objekt klicken. Meine schnelle Lösung bestand darin, meinem Layout, das sich über die gesamte Kollektionsansicht erstreckt, ein riesiges hinzuzufügen und seinen Z-Index unter dem aller anderen Elemente und ergänzenden Ansichten zu platzieren.

-1

Wir brauchen NSCollectionView Element ausgewählt einzustellen:

collectionview.isSelectable = true 
+0

Das scheint nur eine Zeile Code aus meiner Frage –

+0

Ich hatte das gleiche Problem mit meinem Code, so mit Hilfe der oben genannten Code der Zeile hat mein Problem gelöst – user1374

+0

Dann sollten Sie eine neue Frage stellen, Ihren schlechten Code, und beantworten Sie es mit Diese Lösung hast du gefunden. Deine Antwort hilft meiner Frage nicht. –