问题标签 [nscollectionviewitem]

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 投票
1 回答
424 浏览

objective-c - 子类化 NSCollectionView 后的绘图问题

好的,这就是我所做的:

  • 我有一个NSCollectionView
  • 我希望能够启用“选择”项目,并在选择项目时绘制自定义边框
  • 我子类化NSCollectionViewItem(以启用选择)
  • NSViewNSCollectionViewItem视图子类化,以绘制边框

编码

查看项目

自定义视图

但是,绘图似乎有问题。例如:

  • 调整 Collection View 的容器大小时,外框出现一条奇怪的线
  • 当 Collection View 项目不是 100% 可见时(例如,因为它已被向下滚动),选择边框根本不会出现(而我希望它只绘制可见部分)。

一些例子

NSCollectionView 选中项绘制问题

NSCollectionView 绘图问题

这是怎么回事?


PS我不是 Cocoa 中绘图和自定义视图的专家 - 所以任何想法/帮助都非常受欢迎!

0 投票
1 回答
1190 浏览

objective-c - Cocoa - 如何以编程方式更改 NSCollectionViewItem 的大小和布局?

我想用 3 个按钮以编程方式更改 NSCollectionView 的布局,每个按钮将更改集合视图的布局 - 每行 2、3、4 列。并且 NSCollectionViewItem 的大小必须自动调整大小。

我尝试搜索一整天,但没有发现任何帮助。任何帮助,将不胜感激。

谢谢

0 投票
1 回答
164 浏览

objective-c - 单击 NSCollectionView 总是返回相同的对象

我有一个NSCollectionViewItem子类,称为MyItemused as item of my NSCollectionView. 我需要枚举我的集合视图中的所有项目,以使用以下代码为每个项目设置委托:

使用调试器,我看到这段代码在我的方面工作,并且在每次迭代中每次都MyItem指向不同的对象。问题是当我在课堂mouseDown上使用事件时,MyItem无论我点击什么项目,我都会收到相同的对象NSCollectionView。似乎集合视图只使用一个类(单元格模板实例?)。有人知道发生了什么吗?谢谢

0 投票
1 回答
805 浏览

objective-c - 在 NSCollectionView 项目视图操作中获取表示的对象

这是我所拥有的:

  • 一个NSCollectionView
  • 通过填充NSArrayController
  • 每个“项目”( NSCollectionViewItem) 在附加视图中显示其内容
  • 该视图包含一个NSButton

现在,问题:

当用户单击按钮时,我怎么知道代表的对象是哪个?(附加到按钮所属的特定视图的项目)

PS我显然可以做类似的事情:

但它看起来一点也不好看——尽管它确实有效。

想法?

0 投票
1 回答
1077 浏览

cocoa - 更改 NSCollectionView 的选择行为

在我的 Mac 应用程序中,我有一个启用了多选的 NSCollectionView。在我的应用程序中,能够选择多个项目是常态,并且在单击选择多个项目时必须按 cmd 让一些用户感到沮丧,并且大多数用户没有意识到他们可以做到这一点(我收到了很多要求的功能请求多选)

所以,我想改变行为,以便:

  • 当用户单击第二个项目时,第一个项目保持选中状态(无需按住 cmd)
  • 当用户单击所选项目时,该项目被取消选择

我尝试在我自己的 NSCollectionViewItem 子类上覆盖 setSelected,如下所示:

需要调用 super setSelected 以确保集合视图正常运行,但它似乎也是导致默认行为的原因。

我应该怎么做?

0 投票
1 回答
491 浏览

xcode - 如何在 NSCollectionView 中创建组?

如何将部分添加到 NSCollectionView?

在此处输入图像描述

0 投票
1 回答
292 浏览

objective-c - 来自 NSCollectionViewItem 的弹出框序列

TL;WR

从克隆视图(NSCollectionViewItem)弹出转接的最佳方法是什么?


下午好,

我试图弄清楚如何从 itemPrototype 中分离出来,但它并不像我希望的那样直截了当,并且在某种程度上让我绊倒了。

我有一个 NSCollectionView,有可变数量的 NSCollectionViewItem,每个都有一个按钮。我希望所有我需要做的,从按钮到一个小信息窗口,将通过弹出框连接将该窗口连接到按钮,但幸运的是,这不是这样做的.

我假设因为 NSCollectionViewItem 原型上的按钮被克隆以填充 NSCollectionView,所以当它被调用时,它会将混合消息传递给 segue。具体来说,当我按下其中一个按钮时,我收到以下错误。

首先,我从中得到的是一种恐惧感。另外,我真的不认为它喜欢克隆(一定是阴暗面)。

我一直在寻找通过情节提要创建此弹出框转场的替代方法,但看起来这可能不是一个常见问题(或者我仍然不习惯相对少量的 OS X 开发人员)。

具体来说,我的问题是:我如何从 itemPrototype 中“做”一个弹出框转义?我绝对可以以编程方式执行此操作,但我之前没有在 Objective C 中编写过 gui 代码,所以我想知道在我尝试弄清楚之前,这样的 segue 绝对是可能的。由于技术上的不可能,我不想最终把头发拉出来。

感谢您抽时间阅读!我很感激你能给我的任何信息,如果我能提供更多细节,请告诉我,让我的问题更清楚。

迈克尔

编辑 [2015-05-15 18:59]

为了帮助说明我的要求,下面是两张图片;我的集合视图的示例,以及我想应用于集合视图中的项目的弹出框的示例。我希望这会有所帮助,尽管我可以看到它可能会有些混乱,所以如果您有任何问题,请告诉我。

集合视图 查看我想

编辑 [2015-05-15 19:08]

以上两张图片可能不足以解释我希望实现的目标,因此以下是我最终目标的代表。希望这将澄清一切。

最终目标

迈克尔

0 投票
2 回答
1278 浏览

macos - 如何使用具有自调整边距的居中项目实现 NSCollectionView?

假设我在集合视图中有一个项目,该项目将在第一行的集合视图中居中。

并且对于多个项目,所有这些项目将在集合视图中水平分布,它们之间有适当的间距。

如果集合视图的大小发生变化,项目之间的间距将同时更改以适应集合视图的新大小。

的默认行为NSCollectionView在左侧对齐项目,多个项目之间没有间距。

我应该使用layoutManager集合视图的图层来布局项目吗?

由于我使用数据绑定来提供项目,因此插入约束似乎并不容易。

0 投票
1 回答
724 浏览

objective-c - NSButton 绑定到 NSCollectionViewItem:representedObject?

当我在 NSCollectionViewItem 的视图中预先添加一个按钮时,我可以在检查器中绑定它的操作:

在此处输入图像描述

哪个工作没有问题。

现在我想在视图中以编程方式创建该按钮mouseDown:,我应该bind:为与检查器中的“绑定到:集合视图项”相同的结果分配什么选项?

这是代码:(斯威夫特)

编辑:我可以通过子类化 NSCollectionView然后覆盖newItemForRepresentedObject:代表对象分配给子类视图来做到这一点。

仍然想知道是否有没有子类化 NSCollectionView的方法。

0 投票
1 回答
684 浏览

cocoa - NSCollectionView 不显示任何内容

我尝试遵循本指南:

集合视图快速入门

在集合视图项中使用 NSImageView。

什么都没有出现,如果我用 Image Well 设置图像,也没有通过代码设置数组。

所以我尝试以编程方式进行,使用

在集合视图项(子类)中。

如果我不继承 Collection View Item Xcode 告诉我没有原型集,如果我将它子类化它会告诉“无法加载 nibName”......(它在故事板中具有正确的身份集)

我不能让这个集合视图工作:-(

无论如何,我喜欢绑定...所以我想通过绑定获得正确的结果。我检查并重新检查了链接中文档中的每个段落,一切似乎都很好。主要区别在于文档使用应用程序委托,我使用的是视图控制器。

我迅速翻译了 KVC 方法,我认为它们是正确的,因为我知道它们已被调用。他们是: