- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在这里有点迷路:我创建了一个像 colorPicker 一样的按钮:单击它会在弹出窗口中显示一个 collectionView。我首先使用包含 View + collectionView(嵌入为 scrollView + 剪辑 View )的 nib fil 来完成它。这些东西工作得很好。
由于 nib 文件非常简单(并且为了提高我以编程方式设计 View 的编码技能),我决定摆脱 nib 文件并在代码中编写缺失的部分。问题是,除了 collectionView 的内容,我设法完成了工作。经过深入调查,似乎在方法内部:
func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem
应该管理数据源的方法
collectionView.makeItem(withIdentifier: String, for: IndexPath)
没用。事实上,在:
let item = collectionView.makeItem(withIdentifier: ColorPickerPopover.itemIdentifier, for: indexPath)
item 未初始化,正如调试器在我介入时所说的那样(不是 nil,未初始化)。显然,makeItem 方法从不从我创建的子类中实例化任何 collectionViewItem。标识符很好,并且调用了 collectionView.register 函数,就像在 nib 版本中一样,因为这两个项目在这些方面是相同的。 makeItem 函数根本不调用我子类化的 NSCollectionViewItem 的 loadView 方法。
有什么线索吗?
乔希
最佳答案
使用 collectionView.makeItem(withIdentifier:for:)
方法,您首先需要使用 Collection View 注册类或 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
添加到场景中。您还必须将对象的类设置为您的子类才能使其正常工作(您可以在检查器面板上进行设置)。
希望这对您有所帮助!
关于swift - NSCollectionViewItem 从不实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39119345/
如何通过再次单击 NSCollectionViewItem 来取消选择它? 这是我用于选择和取消选择的代码: func collectionView(collectionView: NSCollect
我正在尝试设置一个 NSCollectionView,它在各个 NSCollectionViewItem View 中具有自定义绘图。我需要在每个 View 中绘制一个图像,但无法将该 View 链接
简单的问题,但我找不到任何答案...如何更改 NSCollectionViewItem 实例的角半径? 最佳答案 NSCollectionViewItem 的 view 默认没有图层。你需要设置wan
我有一个绑定(bind)到 NSCollectionView 的 NSArrayController。我的数据模型是一个类 Person。 Inside Person 是一个计时器,每秒都会更改 ag
我正在尝试为我的 NSCollectionViewItem 提供动态大小。我希望它们的大小由它们的内容和我定义的约束决定。 为此,我已将以下内容添加到包含 NSCollectionView 的 Vie
我在这里有点迷路:我创建了一个像 colorPicker 一样的按钮:单击它会在弹出窗口中显示一个 collectionView。我首先使用包含 View + collectionView(嵌入为 s
我想在 NSCollectionViewItem 的 View 中放置一个自定义控件。 假设我有一个名为 BoxesView 的自定义 NSView。BoxesView 只是一个在其 View 中绘制
我是 Cocoa 开发的新手,它的很多概念我都不清楚......我正在尝试构建一个简单的应用程序,它将使用 Flickr API 检索用户照片集并将其显示在 NSCollectionView 中,通过
我觉得这是一个简单的任务,但我似乎无法让它发挥作用。我正在尝试使用带有自定义项目的 NSCollectionView 。我向该项目的自定义 View 添加了另一个 NSImageView,并对该 Vi
我正在尝试创建一个 NSCollectionView,其中的项目适应可用空间,而不是为项目定义固定大小并相应地调整 NSCollectionView 的大小。 我无法找到使用 NSCollection
我正在尝试构建一个充满多个可编辑 TextView 的 NSCollectionView。 (Swift 中的 OS X 应用程序。)我的 NSCollectionViewItem 子类称为 Note
我正在尝试以编程方式创建一个简单的 NSCollectionView。我在 NSViewController 中设置它: class ViewController: NSViewController
我正在使用 NSCollectionView 和 NSCollectionViewItems。 我遇到了以下问题:如果我旋转其中一项的 NSImageView,然后调用 reloadData,更新的
我正在编写一个非常简单的 macOS 应用程序,我想在 Collection View 中显示一些图像。对于它们的显示方式,我不需要任何特殊行为。 docs for NSCollectionViewI
我有一个问题。如何将鼠标右键菜单添加到 NSCollectionViewItem。作为尝试,我还使用了 Apple 的演示应用程序 IconCollection。我尝试将 NSMenu 拖到 Icon
在我的设置中,我有一个连接到 Mac 的卷的 NSCollectionView。对于 NSCollectionViewItem 的 View ,我有一个 NSBox,其中有一个 NSTableView
我在 NSCollectionViewItem 的 View 上有一个 NSTextField。 当您单击 NSCollectionViewItem 时,该项目将被选中。 当您单击 NSTextFie
我一直在努力尝试创建一个 NSCollectionView,它具有一组带有自定义 View 的 NSCollectionViewItems。当项目 View 上的控件是标准 AppKit 控件时,代码
我的自定义 NSView 中有一个 NSTabView,用作 NSCollectionView 的原型(prototype)。在第二个选项卡中,我有 NSButton 按钮和 NSImageView
override func viewDidLoad() { super.viewDidLoad() // Do view setup here. let item = NSNi
我是一名优秀的程序员,十分优秀!