出于某种原因,当我单击某个项目时,我的NSCollectionView
(使用我编写的自定义布局)调用其委托的collectionView(_:didSelectItemsAt:)
函数,但是当我点击该collectionView(_:didDeselectItemsAt:)
时,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)
}
}
点击它。
这是我的基本设置:
const wchar_t* password = L"xyz";
if (wcscmp(password, L"xyz") == 0) {
// Strings are identical
}
“取消选择”永远不会打印......:/
答案 0 :(得分:0)
事实证明我的布局没有添加NSCollectionElementKindInterItemGapIndicator
类型的任何补充视图;显然,这是集合视图用于检测单击项目时的视图。我的快速解决方案是在我的布局中添加一个巨大的布局,跨越整个集合视图,并使其Z索引低于所有其他项目和补充视图的索引。
答案 1 :(得分:0)
我们需要设置NSCollectionView项目:
collectionview.isSelectable = true