override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
let item = NSNib(nibNamed: NSNib.Name("CollectionViewItem"), bundle: nil)
self.collectionView.register(item, forItemWithIdentifier: .collectionViewItem)
extension ViewController: NSCollectionViewDataSource {
func numberOfSections(in collectionView: NSCollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int {
return Templates.count
}
func collectionView(_ collectionView: NSCollectionView,
itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {
let item = collectionView.makeItem(
withIdentifier: .collectionViewItem, for: indexPath)
guard let collectionViewItem = item as? CollectionViewItem else {return item}
collectionViewItem.imageView = image
return item
}
}
extension NSUserInterfaceItemIdentifier {
static let collectionViewItem = NSUserInterfaceItemIdentifier("CollectionViewItem")
}我已经设置了如下代码中的所有内容,但由于某种原因,我无法通过
guard let collectionViewItem = item as? CollectionViewItem else {return item}警卫总是返回项目,而不是collectionViewItem。也许有人遇到过这样的问题?我做错了什么?几乎一直在遵循教程https://www.raywenderlich.com/1246-collection-views-in-os-x-tutorial。
使用最新的Xcode 10.0 +最新的迅捷
发布于 2018-09-19 09:08:07
发现问题了。
问题:我所做的:我创建了一个带有NSCollectionViewItem子类的新文件,并选择创建.xib。
结果,Xcode 10.0并没有正确地做到这一点。它创建了一个带有占位符、文件所有者和其他东西的.xib。Xcode没有从IB中添加集合视图项对象。这很奇怪,因为以前的版本确实自动添加了Collection View Item对象。
一旦我添加了Collection View Item对象并设置了这个类,问题就解决了。
https://stackoverflow.com/questions/52388150
复制相似问题