问题标签 [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 回答
489 浏览

objective-c - 为什么我在 NSCollectionViewItem'view 中的 NSImageView 为零?

在 IB 中,我创建了一个NSCollectionView和它的NSCollectionViewItemNSView属于的一个。NSCollectionViewItemNSCollectionItem由一个NSImageView和一个组成NSTextField。我使用可可绑定设置它们的值。我想更改选择NSImageView时的边框颜色。我NSCollectionItem为所有这些创建自己的类和在 IB 中设置他们的自定义类。在NSCollectionViewItem类中我重写了它的 setSelected:(BOOL)flag功能。代码是

我想在NSView调用它的绘图函数时更改边框颜色。在NSView我创建的类IBOutletsNSImageViewNSTextField将它们与 IB 连接起来。但是当调用绘图函数时,我使用代码

结果为nil。为什么我无法获取所选NSCollectionViewItem 的imageView?我在哪里犯了错误?帮帮我,谢谢!

0 投票
0 回答
261 浏览

macos - NSCollectionView 不动画重新排序

我正在使用滑块更新我的收藏项目的项目大小

但是我不希望重新排序动画发生(单元格应该只出现在它们的新位置上)

0 投票
1 回答
1445 浏览

cocoa - 在 NSCollectionViewItem 视图中单击

我是 Cocoa 开发的新手,所以很多概念对我来说都不是很清楚......我正在尝试构建一个简单的应用程序,它将使用 Flickr API 来检索用户照片集并通过单击它们在 NSCollectionView 中显示它们,将开始下载照片集的照片。

我正在使用 Xcode 5.0.1 和最新的 SDK,即 10.9

在阅读了一些关于如何使用绑定处理 NSCollectionView 的文章后,我现在面临另一个关于处理 NSCollectionViewItem 中的事件的问题。

据我了解,鼠标事件可以通过实现轻松处理

在 NSView 子类中,说

并将视图自定义类分配给我在InterfaceBuilder中创建的子类(MyViewController)。

现在,我可以按照上述方式进行操作,并且 mousedown 在大多数小部件中都按预期进行了处理。问题是,我有一个 NSCollectionViewItem 子类,如下所示:

我正在尝试在那里实现 mousedown 方法,该类在单独的 nib 文件中设置为文件所有者。当 NSCollectionView 加载时,视图将自动加载。

现在,MyItemController 不能作为 IB 视图对象中的客户类,这显然是因为它不是 NSView 子类而是 NSCollectionViewItem 子类。

如果我编写 NSView 的子类并制作视图对象的自定义类,我可以获得鼠标按下。但是,我无法通过这种方法获得 NSMutableArray 的代表对象和索引,它们是我需要的基本信息。

所以我的问题是,处理 NSCollectionViewItem 的鼠标事件视图的正确方法是什么?我在 GitHub 中的代码:

https://github.com/jasonlu/flickerBackupTool

谢谢!

更新

我发现解决这个问题的一种方法是通过继承 NSView 并实现 mousedown 并使用超级、子视图来获取和索引以及数组本身

这似乎可行,但如果这是最佳做法,我不起诉,它看起来过于依赖视图并且需要很长时间才能到达阵列。

0 投票
0 回答
250 浏览

objective-c - 在 NSCollectionView 中绑定 NSTableView

我已经能够成功地将我的视图绑定到NSCollectionView,但是我的模型没有正确绑定到视图本身。我的模型包含一些属性:

我能够以编程方式在我的模型类中绑定一个数组控制器,它会成功绑定到数据数组:

我能够成功地将我的模型数组绑定到NSCollectionView绘制视图的模型,但是我想将模型绑定到视图中的每个单独NSMutableArrayNSTableView视图。我认为没有办法以编程方式执行此操作,因为您绑定到Collection View Item.representedObject. 我觉得你做不到Collection View Item.representedObject.dataArrayController.arragnedObjects

0 投票
1 回答
178 浏览

cocoa - isOpaque 不会停止传递给父母 drawRect

我遇到了 Cocoa 及其视图重绘层次结构的问题。

我目前正在测试仪表样式控件中的显示(音频)级别,并且我正在使用来自苹果的 MatrixMixerTest 示例项目的 MeteringView 类。这个类正在绘制仪表,只绘制变化的差异,这看起来是一个非常有效的类。

我的项目分为 2 个拆分视图,其中一些是 NSCollectionViews(滚动视图、剪辑视图),而另一些只是静态视图。如果我将仪表添加到那些“静态”视图中,当这些视图调用 setNeedsDisplay:YES 时它们可以正常工作。如果将仪表添加到 CollectionView 项目的视图中,它会被渲染,但会丢失其绘制的“旧级别”部分及其角/背景。我认为发生这种情况是因为 CollectionView 项目也被称为重绘(具有背景图像)并且一切都消失了。它正在绘制一些当前正在变化的部分(绘图作品)。

有没有办法防止 Item 本身被重绘?或者,我不知道为什么在那些静态视图中没有发生这种情况,因为这些视图也有背景图像,但不会在仪表上绘制。

CollectionView 中是否有一些技巧或与“正常”视图中的不同之处?

编辑:阅读有关 isOpaque (MeteringView isOpaque = YES) 后意味着如果设置为 yes,则不应调用父视图 drawRect。好吧,这适用于静态视图,那些 MeteringViews 不调用父母 drawRect,但是 CollectionView 中的那些。我不知道为什么。

编辑 2:我给这个主题另一个标题,因为 MeteringView 中的 isOpaque=YES 并没有停止在 CollectionView 中调用父母 drawRect,在正常视图中它正在工作。有什么需要了解的吗?我必须停止重绘 CollectionView 项目,因为这就是问题所在。

提前谢谢各位

本杰明

0 投票
2 回答
1589 浏览

objective-c - Cocoa-在 NSCollectionView 中为 NSButton 使用代表对象

设置

我有一个NSCollectionView. 我在View Prototype. 我已经成功地设置了绑定,所以Card Titleaction得到了填充。(下图1)

目标

当我单击复选框时,我想运行一个函数来访问已经能够访问的特定CardModel内容。View Prototype然后我会相应地操作它的数据。

研究

我在 SO 上找到了这篇文章:获取 NSCollectionViewItem NSButton click 的代表对象值,它很好地描述了我的情况。不幸的是,答案是没有特定的代码。以下是建议:

因此,首先,将按钮单元格的表示对象设置为拥有该按钮的集合视图项。(您可以在 nib 编辑器中执行此操作。)然后,在您的操作方法中,获取按钮的单元格,然后是单元格的表示对象(即项目),然后是项目的表示对象。

看起来很简单,对吧?

尝试的解决方案

我创建了一个方法cardCheckBoxClicked:并将其连接到复选框。

根据上面的建议,我将button cell的插座连接representedObjectCard Collection View Item. (图2)

然后我尝试在代码中获取Card Collection View Item's 。representedObject

来自MainWindowController.h

错误

当我单击复选框时,我收到以下错误:

问题!

那么 -我如何访问button cell's 表示的对象?我误解了上面给出的建议吗?如何成功访问我需要的数据?

图片(参考)

绑定示例 在此处输入图像描述

表示对象连接 在此处输入图像描述

0 投票
1 回答
167 浏览

objective-c - NSCollectionViewItem 按钮总是从 ArrayController 返回第一个项目

我有一个 NSCollectionView,其中 NSArrayController 绑定到 NSCollectionViewItem。

Item 本身包含按钮(Item 的整个空间)。

单击按钮时,我试图确定单击了哪个项目按钮,但不能:

总是返回第一个项目的名称。

如何确定单击了哪个项目的按钮?

0 投票
1 回答
499 浏览

objective-c - Xcode:NSCollectionViewItem 没有名为 imageView 或 textField 的插座

我想将我的 xib 图形用户界面中的 imageView 和 textField 链接到来自 NSCollectionViewItem 的所属 Outlets(这是应用程序工具包中的一个元素)。但是在链接绑定时会弹出以下消息:

“Xcode 无法在 NSCollectionViewItem 类中找到名为 @property (assign) IBOutlet NSImageView *imageView NS_AVAILABLE_MAC(10_7); 的键值编码兼容属性。”

所以,对我来说,不可能连接这些对象。因此,我没有得到文本字段或图像视图的任何引用插座。

在另一个 xib 中已经存在相同的绑定。但是它们标有白色感叹号,并且还显示一条奇怪的消息:“NSCollectionViewItem 没有名为 imageView 的插座。”

有谁知道如何解决这个问题?会很好。

0 投票
1 回答
1006 浏览

macos - 带有自定义视图的 NSCollectionViewItem

我一直在努力尝试创建一个具有一组 NSCollectionViewItems 和自定义视图的 NSCollectionView。当项目视图上的控件是标准 AppKit 控件时,代码可以正常工作,但是一旦我添加了自定义 NSView,就无法从 Interface Builder 绑定它。

花几个小时在互联网上搜索,似乎有很多选择可以解决这个问题,但似乎都很专业。是否有一些简单的示例代码演示了如何在项目视图上给定一个 CustomImage * 来在该自定义视图上设置图像属性?

为每个项目提供数据的模型是:

NSCollectionViewItem 子类是:

其中 CustomImage 只是 NSImageView 的子类。

我尝试继承 NSCollectionView 并覆盖 newItemForRepresentedObject 作为一些建议的答案并在那里分配:

但这只是在绑定调用中爆炸,出现“名称”不存在的错误。

从理论上讲,这应该是一件非常简单的事情,但我找到的答案都没有说明这一点。另一种方法是放弃 NSCollectionView 并使用 GitHub 上更简单的替代品之一,但我想最后一次尝试看看这是否可以首先解决。

谢谢!

0 投票
8 回答
8372 浏览

cocoa - Cocoa - NSCollectionView 和 NSCollectionViewItem 之间的链接在哪里?Xcode 6 错误?

当你将一个 NSCollectionView 拖到一个视图上时,一个 NSCollectionViewItem 会出现在情节提要上,四处飘荡。

想象一下,我将几个 NScollectionView 拖到同一个视图中。我会有一堆 NSCollectionViewItems。集合视图如何知道哪个 NScollectionViewItem 属于它?在界面生成器上可以看到两者之间是否存在联系?我在界面生成器上看不到任何内容?我在哪里可以看到?

编辑:显然这似乎是一个 Xcode 错误。当您将 NSCollectionView 添加到情节提要时,它没有指向 NSCollectionViewItem 的链接,并且似乎无法在它们之间连接 itemPrototype 插座。

在就此类错误与 Apple 联系后,他们的回答是:“这是 OS X 上 Storyboards 的一个已知问题。请改用 Xibs。”