gpt4 book ai didi

swift - NSCollectionViewItem 在 itemForRepresentedObjectAtIndexPath 中没有导出

转载 作者:搜寻专家 更新时间:2023-11-01 06:19:10 24 4
gpt4 key购买 nike

我有一个 NSCollectionView,它显示一堆称为“ImageCollectionViewItem”的项目。我有一个 ImageCollectionViewItem.xib 文件,它只有一个覆盖该项目的 NSView。我希望能够动态更改该 View 中的内容,但是当我尝试引用它时,它是零。我已经检查过以下问题:outlets in UIViewController nil in viewdidload ,那不是我的问题,我链接了它并且我有实心圆圈

这是 View Controller 扩展:

extension ViewController : NSCollectionViewDataSource {

func collectionView(collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int {
return titles.count
}
func collectionView(collectionView: NSCollectionView, itemForRepresentedObjectAtIndexPath indexPath: NSIndexPath) -> NSCollectionViewItem {
let item = collectionView.makeItemWithIdentifier("ImageCollectionViewItem", forIndexPath: indexPath) as! ImageCollectionViewItem

//This is what is nil:
let thisView = item.iconView

return item
}

}

然后是 ImageViewCollectionItem 代码

class ImageCollectionViewItem: NSCollectionViewItem {

@IBOutlet weak var iconView: NSView!

var numItem: Int?

override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.

view.wantsLayer = true
view.layer?.backgroundColor = NSColor.whiteColor().CGColor
}
}

最佳答案

在 Cocoa 世界中,这肯定是一些奇怪的东西。但这里有一些流程应该有所帮助。在 Interface Builder 中打开您的 ImageCollectionViewItem.xib 并从对象库中拖动“Collection View Item”,然后选择它并将您的自定义类名称设置为 ImageCollectionViewItem,然后 makeItemWithIdentifier 应该创建非零项。

在我的示例中,我有 Tile 类:

 class Tile: NSCollectionViewItem {

下面是我创建磁贴的方式:

func collectionView(collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int {

return items.count
}


func collectionView(collectionView: NSCollectionView,
itemForRepresentedObjectAtIndexPath indexPath: NSIndexPath) -> NSCollectionViewItem {

let item = collectionView.makeItemWithIdentifier("Tile", forIndexPath: indexPath) as! Tile
return item


}

这是IB的图片:

enter image description here

如果您按照这些步骤操作,您的网点将在创建时连接。就我而言,我有 2 个网点:

class Tile: NSCollectionViewItem {

@IBOutlet weak var bigScrollView: ItemScrollView!
@IBOutlet weak var smallScrollView: ItemScrollView!

override func awakeFromNib() {
super.awakeFromNib()
}

override func viewDidAppear() {
//
}

}

正如您在图片中看到的那样,它们都已连接:

enter image description here

关于swift - NSCollectionViewItem 在 itemForRepresentedObjectAtIndexPath 中没有导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37574646/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com