问题标签 [nscollectionview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
528 浏览

objective-c - NSCollectionView - 核心数据绑定 - 除非我调整窗口大小,否则不会显示

虽然我在自定义 NSCollectionView 方面取得了长足的进步,但感谢我在这里和网络上的提示,我遇到了一些困难,希望有人能提供帮助。我有一个包含有关视频文件的信息的核心数据实体和一个显示每个视频的缩略图预览的 NSCollectionView。我在 NSCollectionView 上设置了绑定。

在我第一次尝试设置绑定时,我在类模式下设置了我的数组控制器,并将它的内容绑定到一个 NSMutableArray,我正在用 windowDidLoad 中的视频实体中的所有对象填充它。我在数组控制器上执行 addObject 以让它们显示出来。这工作得很好,除了如果你有很多对象要加载需要相当长的时间。

所以...当可以将 NSCollectionView 直接绑定到 Core Data 时,将所有对象复制到数组中对我来说似乎很愚蠢。我将 ArrayController 更改为实体模式,并将托管对象上下文设置为指向我的 App Delegate 的 managedObjectContext。当我启动我的应用程序时,窗口显示在屏幕上之前会有一段延迟。事实上,我在 windowDidLoad 过程中所做的其他事情是立即进行的,但窗口显示还需要 5-10 秒。完成后,NSCollectionView 中不会显示任何内容。

我最初认为它只是不工作,直到我不小心调整了窗口的大小并且所有项目都显示在集合视图中。我试图看看是否有办法知道窗口何时实际显示,以便我可以调用 [collectionView setNeedsDisplay:YES] 但要么它不起作用,要么我没有在正确的地方调用它。

有谁知道为什么这些对象不只是出现?我还希望窗口立即显示,然后集合视图从核心数据加载项目。直接从 Core Data 加载似乎比将项目复制到数组要快得多。我很乐意发布您想查看的任何代码,尽管由于绑定是在 IB 中设置的,因此没有太多可显示的内容。:)

谢谢!

0 投票
1 回答
402 浏览

cocoa - Core Data bound NSCollectionView or NSTableView with one item static?

Is it possible to have a NSCollectionView bound to a core data model (by NSArrayController) and having the first item not to show the first item of NSArrayContoller but a custom view (NSButton)?

(The second item of the NSCollectionView would then dislpay the NSArrayController's first item.)

0 投票
1 回答
2150 浏览

objective-c - 从 Cocoa App 拖放到 Finder

我有一个NSCollectionView,它显示一些文件: 在此处输入图像描述

我想要的是...

  1. 能够选择一个文件。
  2. 能够将此文件拖放到桌面或另一个 Finder 窗口中。

文件图标由 NSImageView 显示。

提供此类功能的好方法是什么?

非常感谢!

0 投票
1 回答
2460 浏览

cocoa - 基于视图的 NSTableView 与 NSCollectionView?

我已经了解了基于单元的NSTableView 的轻量级方法,并且我想我了解与 NSCollectionView 的区别。(基于单元的)NSTableView 和 NSCollectionView 之间的差异

然而,不太明显的是基于视图的NSTableView 和 NSCollectionView 之间的区别。

由于 NSCollectionView 可以灵活地显示其项目(即在网格布局中),它可以模拟 tableView 的列表(最多一列的网格)并排除个人偏好,为什么有人会选择(基于视图的)NSTableView 而不是 NSCollectionView?

0 投票
0 回答
350 浏览

macos - 每当在集合中添加新项目时,NSCollectionViewItem 中的 CALayer 都会闪烁(并消失)

NSCollectionViewItem在一个单独的 xib 文件中。它有一个图像视图。以前我是直接在NSImageView. 用户界面运行良好。

现在,我添加了一个CALayerNSImageView. 我用它来显示图像并从一个图像过渡到另一个图像。

问题是:每次用户添加一个新的NSCollectionViewItem. CALayers闪烁/闪烁,NSCollectionViewItem有时完全消失。这是随机发生的。有时CALayer每个项目都会消失。其他时候只有少数项目CALayer消失。

然后,如果我添加另一个项目或NSCollectionView通过调整容器窗口的大小来调整大小,这NSCollectionView将重新调整所有项目。CALayer出现回来,但并非总是如此。这也是随机的。一些项目保持 CALayer-less。

我的猜测是动画NSCollectionView搞砸了NSCollectionViewItemCALayer。

知道发生了什么吗?是否有一些示例代码/开源项目CALayer用于NSCollectionViewItem

任何帮助,任何提示,无论多么小,都将受到高度赞赏。

0 投票
1 回答
751 浏览

objective-c - 如何将鼠标右键菜单添加到 NSCollectionViewItem

我有一个问题。如何将鼠标右键菜单添加到 NSCollectionViewItem。作为尝试,我还使用 Apple 的演示应用 IconCollection。我尝试将 NSMenu 拖到 IconViewPrototype.xib 并将其连接到 IB 中的视图菜单出口。但是在构建和运行时,单击鼠标右键,没有任何反应。我认为NSBox 也是 NSView 的子类,应该支持鼠标右键菜单。

0 投票
2 回答
681 浏览

cocoa - 启用多选时,NSCollectionView 在拖动前的恼人延迟

我有一个基本的 Cocoa 应用程序,其中NSCollectionView显示了许多文件。集合视图允许一次选择多个项目。

问题是为了选择两个或多个项目将它们拖出集合视图,我必须单击并按住大约一秒钟才能开始拖动。

如果我立即单击并拖动,则集合视图会更改选择(即绘制“选择”矩形)。

我花了一段时间才弄清楚在拖动之前我必须单击并按住。我已经可以看到,我的应用程序的许多用户不会弄清楚这一点,并且会抱怨拖动不起作用。

示例:即使在 Apple 的示例代码中也存在问题:https ://developer.apple.com/library/mac/#samplecode/IconCollection/Introduction/Intro.html#//apple_ref/doc/uid/DTS10004477

有趣的是,Finder 的“图标视图”按预期工作(拖动工作没有延迟)。不确定它是否在NSCollectionView下面使用,但似乎很有可能。

0 投票
3 回答
2083 浏览

cocoa - 访问 NSCollectionView 视图的控件

我正在使用一个NSCollectionView来显示各种对象。整个事情都很好,除了一件烦人的事情。我无法弄清楚如何访问用于表示集合中每个对象的视图上的各种控件。

这是设置:

  • NSCollectionView我在 IB中拖入了我的视图。
  • 我做了一个自定义子类NSCollectionViewItem。映射我在 IB 中的课程。
  • 我创建了一个自定义子类NSBox来充当集合中每个对象的视图。还在 IB 中映射了此类并将其连接到view我的NSCollectionViewItem子类的属性。
  • 我在 IB 中进行了所有绑定以显示每个对象的正确信息。

风景:

在此处输入图像描述

生成的集合视图:

在此处输入图像描述

推理我的子类NSCollectionViewItem基本上是集合中每个视图的控制器,我在我的控制器子类中的视图中引用了各种控件的出口:

当我检查调试器中的任何实例时SourceCollectionViewItem,所有属性都显示为 nil,尽管我实际上可以在屏幕上看到它们并且所有内容都按应有的方式显示。

我的设置灵感来自 Apple 的示例应用IconCollection

我显然错过了一些东西。什么?

编辑:我发现各种帖子都暗示了一个类似的问题: CocoaBuilder.com这个关于 SO 的问题。

编辑:为了完整起见:这篇文章也涉及该主题,并根据已接受答案中提到的选项的组合提供解决方案。

0 投票
1 回答
524 浏览

objective-c - 在 NSCollectionView 中显示 NSPopover?

(注:问题之前已经提出过,一年多前的结果还没有定论。希望我们现在知道更多并且可以解决它?)

双击时,我试图在 NSCollectionItem 上显示 NSPopover。我的 NSCollectionView 设置正确并接收输入。

(如果我将代码复制粘贴到其他 NSView 子类,它工作得很好。NSCollectionView 有一些东西似乎把事情搞砸了。)

编码:

BIECollectionViewItem.h

BIECollectionViewItem.m

如果我在 mouseDown 事件中添加一条日志语句,我可以确认该事件正在被触发。但是,NSPopover 拒绝出现!

有谁知道如何让 NSPopover 出现在 NSCollectionView 上?

0 投票
1 回答
555 浏览

objective-c - 如何为 NSCollectionViewItem 内的按钮设置操作

我正在使用 NSCollectionView 在绑定数组控制器中显示图片列表,另外,我想在每张图片的左上角添加一个删除按钮,以便当有人按下按钮时,它将删除相应的对象阵列控制器。

但是,当我尝试使 NSCollectionViewItem 成为我的自定义类的子类,并将删除按钮的操作设置为在我的自定义类中编写的方法时,它会报告如下错误

'无法将动作 XXX: 连接到 NSCollectionViewItem 类的目标'

此外,尝试在 NIB 文件中添加数组控制器对象时失败。

我应该怎么做才能让一切正常?