- 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/
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 6 年前。 Improve t
notificationCenterPublisher = NotificationCenter.default .publisher(for: .NSManagedObjec
我有以下 Rust 代码: #[inline(never)] fn x() -> i32 { 21 } pub fn main() -> i32 { x() } 如果没有优化 (-C
notificationCenterPublisher = NotificationCenter.default .publisher(for: .NSManagedObjec
我有以下 Rust 代码: #[inline(never)] fn x() -> i32 { 21 } pub fn main() -> i32 { x() } 如果没有优化 (-C
假设我的 ASPX 页面没有内联 C# 代码块。 所以,我可以安全地设置 ...在我的 web.config 文件中,不用担心编译错误。 就性能而言,使用以下设置是否会有任何损失? 即“自动”检测
应用程序.js var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor: 'black', l
基本上,我正在为实现多级优先级队列的 xv6 内核实现一个调度程序。我有一个严重的问题,我不明白,我类(class)的助教不明白,我已经错过了这个项目的最后期限,所以现在帮助我不会给我任何加分 - 但
我想避免 git 自动 merge 我的 composer.json。这样我就可以在 develop 分支中有一个使用 dev-develop 包的 composer.json,而 master 中的
当比较两种不同的算法实现时(因此,不关心它们的绝对性能,而只关心相对性能)我是否最好强制 Java 只运行解释代码? 也就是说,打开 -Xint 标志会更好吗? 最佳答案 我不认为禁用 JIT 会更好
class A{ const size_t number; public: A(size_t number): number(number) {} void f(){
问题 寻找在以下之间切换的方法: 总是 从不 仅在静默模式下 仅当不处于静默模式时 这些选项在手机上的路径---菜单>>设置>>声音>>振动---找到。 通过手机导航很容易更改(顺便说一句,我的手机是
如何设置电源设置关闭:从不(关闭显示器=从不,让计算机进入休眠状态=从不),通过c#代码 最佳答案 这个问题中给出的链接可以告诉你一个方法。 Programmatically change Windo
我是一名优秀的程序员,十分优秀!