【问题标题】:Cant get NSCollectionView NSCollectionViewItem to work无法让 NSCollectionView NSCollectionViewItem 工作
【发布时间】:2019-02-22 13:59:33
【问题描述】:
    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 + 最新的 swift

【问题讨论】:

  • 您似乎没有正确地告诉应用程序您的集合视图项。仔细查看 raywenderlich 网站。

标签: swift cocoa nscollectionview nscollectionviewitem


【解决方案1】:

找到问题了。

问题:我做了什么:我用 NSCollectionViewItem 的子类创建了一个新文件,我也选择创建 .xib。

事实证明,Xcode 10.0 不能正确执行此操作。它创建了一个带有占位符、文件所有者和内容的 .xib。 Xcode 没有从 IB 添加 Collection View Item 对象。这很奇怪,因为以前的版本确实自动添加了 Collection View Item 对象。

一旦我添加了 Collection View Item 对象并设置了类,问题就自行解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 2020-02-23
    • 2014-12-26
    • 2017-12-22
    相关资源
    最近更新 更多