swift – NSCollectionViewItem永远不会实例化
我有点迷失在这里:
我创建了一个像colorPicker一样的按钮:单击它会在弹出框中显示一个collectionView. 我首先用一个包含视图的nib fil来实现它的集合视图(嵌入在scrollView中的一个clipView). 东西工作得很好. 由于nib文件非常简单(并且为了提高我在编程方式设计视图时的编码技巧),我决定摆脱nib文件并在代码中编写缺失的部分. func collectionView(_ collectionView: NSCollectionView,itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem 这应该是管理数据源的方法 collectionView.makeItem(withIdentifier: String,for: IndexPath) 不起作用.事实上,在: let item = collectionView.makeItem(withIdentifier: ColorPickerPopover.itemIdentifier,for: indexPath) item是未初始化的,正如调试器在我介入时说的那样(不是零,未初始化).显然,makeItem方法永远不会从我所创建的子类中实例化任何collectionViewItem. 任何线索? 玩笑 解决方法
使用collectionView.makeItem(withIdentifier:for :)方法,您首先需要使用集合视图注册类或nib文件:
使用课程 使用register(_:forItemWithIdentifier :)(第一个参数接受AnyClass?) collectionView.register(MyCustomCollectionViewItemSubclass.self,forItemWithIdentifier: "SomeId") 使用Nib文件 使用register(_:forItemWithIdentifier :)(第一个参数接受NSNib?). let nib = NSNib(nibNamed: "MyCollectionViewItem",bundle: nil)! collectionView.register(nib,forItemWithIdentifier: "SomeId") 关键是:在您的Nib文件中,您还必须确保在场景中添加了NSCollectionViewItem.您还必须将对象的类设置为子类才能使其工作(您可以在检查器的面板上设置它). 希望这可以帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |