// // KMQucikToolsView.swift // PDF Master // // Created by lizhe on 2023/10/27. // import Cocoa class KMQucikToolsView: KMBaseXibView { @IBOutlet weak var collectionView: NSCollectionView! var data: [KMQucikToolsModel] = [] override func draw(_ dirtyRect: NSRect) { super.draw(dirtyRect) // Drawing code here. } override func setup() { //设置代理 let layout = NSCollectionViewFlowLayout() layout.scrollDirection = .horizontal layout.minimumLineSpacing = 10 layout.minimumInteritemSpacing = 10 // 设置布局到 NSCollectionView self.collectionView.collectionViewLayout = layout self.collectionView.delegate = self self.collectionView.dataSource = self //是否可选中 self.collectionView.isSelectable = true //注册cell self.collectionView.register(KMQucikToolCollectionViewItem.self, forItemWithIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMQucikToolCollectionViewItem")) // self.backgroundColor(KMAppearance.Layout.l0Color()) } override func reloadData() { self.data.removeAll() for type in KMQucikToolsModel.showType() { self.data.append(KMQucikToolsModel.init(type: type)) } self.collectionView.reloadData() } } extension KMQucikToolsView: NSCollectionViewDelegate { //当item被选中 public func collectionView(_ collectionView: NSCollectionView, didSelectItemsAt indexPaths: Set) { print("点击") let view = collectionView.item(at: indexPaths.first!) as! KMQucikToolCollectionViewItem // let content = view.model // guard let callBack = didSelect else { return } // // content?.index = indexPaths.first!.item // callBack(self, content!) } //当item取消选中 public func collectionView(_ collectionView: NSCollectionView, didDeselectItemsAt indexPaths: Set) { _ = collectionView.item(at: indexPaths.first!) as! KMQucikToolCollectionViewItem } } extension KMQucikToolsView: NSCollectionViewDataSource { public func numberOfSections(in collectionView: NSCollectionView) -> Int { return 1 } public func collectionView(_ collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int { return self.data.count } //返回对应的item自定义个体 public func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem { let view = collectionView.makeItem(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMQucikToolCollectionViewItem"), for: indexPath) as! KMQucikToolCollectionViewItem if self.data.count > indexPath.item { view.model = self.data[indexPath.item] } return view } } extension KMQucikToolsView: NSCollectionViewDelegateFlowLayout { public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> NSSize { return NSSize(width: 216, height: 96) } public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, insetForSectionAt section: Int) -> NSEdgeInsets { return NSEdgeInsets(top: 10, left: 10, bottom: 10, right: 10) } }