无法让 NSCollectionView NSCollectionViewItem 工作
Cant get NSCollectionView NSCollectionViewItem to work
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}
守卫总是 returns 项,而不是 collectionViewItem。
也许有人遇到过这样的问题?我究竟做错了什么?
几乎一直在遵循教程 https://www.raywenderlich.com/1246-collection-views-in-os-x-tutorial.
使用最新的 Xcode 10.0 + 最新的 swift
找到问题了。
问题:我做了什么:我用 NSCollectionViewItem 的 subclass 创建了一个新文件,我也选择创建 .xib。
事实证明,Xcode 10.0 并没有正确地做到这一点。它创建了一个带有占位符、文件所有者和其他内容的 .xib。 Xcode 没有从 IB 添加 Collection View Item 对象。这很奇怪,因为以前的版本确实自动添加了 Collection View Item 对象。
添加 Collection View Item 对象并设置 class 后,问题自行解决。
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}
守卫总是 returns 项,而不是 collectionViewItem。 也许有人遇到过这样的问题?我究竟做错了什么? 几乎一直在遵循教程 https://www.raywenderlich.com/1246-collection-views-in-os-x-tutorial.
使用最新的 Xcode 10.0 + 最新的 swift
找到问题了。
问题:我做了什么:我用 NSCollectionViewItem 的 subclass 创建了一个新文件,我也选择创建 .xib。
事实证明,Xcode 10.0 并没有正确地做到这一点。它创建了一个带有占位符、文件所有者和其他内容的 .xib。 Xcode 没有从 IB 添加 Collection View Item 对象。这很奇怪,因为以前的版本确实自动添加了 Collection View Item 对象。
添加 Collection View Item 对象并设置 class 后,问题自行解决。