问题标签 [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 投票
1 回答
449 浏览

objective-c - 从另一个线程更新 NSCollectionView 会导致它空白

我的 Mac 应用程序中有一个 NSCollectionView,它包含一些图标。同时,我使用 NSOperationQueue 作为任务调度程序来排队一些操作。在一个 NSOperation 中,我修改了 NSCollectionView 的内容,当内容更改时,视图应该立即更新。

如果我在主线程中更新它,那么它工作得很好。如果我将相同的源代码放在 NSOperation::main() 的末尾,那么 NSCollectionView 将完全空白。

这是某种错误还是我做错了?

谢谢!

0 投票
3 回答
18154 浏览

xcode - 如何从头开始以编程方式创建 NSCollectionView?

NSCollectionView仍然是我见过的 Cocoa API 中最神秘的部分之一。文档很差,而且有很多活动部分,其中许多通常在 Interface Builder 中实现,这使得文档变得具有挑战性。

请提供示例代码来创建最简单的情况,NSCollectionView即在不使用 Xcode 的情况下显示文本字段或按钮,其中每个文本字段或按钮都有不同的标题。假设一个带有默认windowIBOutlet 的新 Xcode 项目。

对于此示例,无需绑定即可在数据源更改时更新 NSCollectionView。只需显示一个原型对象网格并将每个对象的标题设置为某个值。

如果我们可以为许多人提供一个如何做到这一点的好例子,我认为这将帮助每个与我一起工作NSCollectionViews并且像我一样困惑的人。

请求摘要

  • 提供示例代码以在新的 Xcode 项目中呈现 NSCollectionView
  • 不要使用 Interface Builder,请使用提供的默认窗口 IBOutlet
  • NSCollectionView 应该包含文本字段或按钮,您可以选择
  • 视图中的每个项目都应该有不同的标题
  • 无需绑定

如果有满足这些要求的示例代码,请提供一个链接,那就太好了!

0 投票
2 回答
1843 浏览

ios - iOS 上的 NSCollectionView

我正在开发一个 iPad 应用程序,我想在上面使用类似 NSCollectionView 的东西。有几个 3rd 方库可以做到这一点。问题是它们似乎都不支持 iOS 4.x。我真的需要支持这个版本的iOS。有谁知道支持 iOS 4.0 的 iOS 的 NSCollectionView-ish 控件?

谢谢!

0 投票
2 回答
1206 浏览

macos - 如何在 NSCollectionView 中禁用选择矩形绘制?

我有一个NSCollectionView运行良好的NSArrayController. 我的收藏视图项目被配置为多选,我对此很满意。但是,当集合视图中发生鼠标拖动事件时,将绘制一个选择矩形。如何禁用此选择矩形绘图并仍保留多个选择NSCollectionView?谢谢你的帮助!

0 投票
3 回答
963 浏览

objective-c - 在 NSCollectionView 中不创建空选择

我已经在可可应用程序中设置了一个NSCollectionView。我已经对集合视图进行了子类化,以便在它选择/取消选择其中一个视图时NSCollectionViewItem向我发送自定义。NSNotification发布此通知时,我注册以在我的控制器对象中接收通知。在这个方法中,我告诉刚刚被选中的视图它被选中并告诉它重绘,这使得它自己着色为灰色。

子类NSCollectionViewItem

控制器类(在-(void)awakeFromNib方法中):

-(void)selectionChanged:(NSNotification *)notification方法:

包含此代码的应用程序要求在任何时候集合视图中都没有空选择。这就是我遇到问题的地方。我尝试检查视图的选择何时更改,如果没有选择则重新选择它,并使用NSCollectionView's手动选择视图

-(void)setSelectionIndexes:(NSIndexSet *)indexes

但是总有一种情况会导致集合视图中出现空选择。

所以我想知道是否有一种更简单的方法可以防止出现空选择NSCollectionView?我在界面生成器中看不到复选框。

提前致谢!

更新

我最终只是继承了我的NSCollectionView,并覆盖了该- (void)mouseDown:(NSEvent *)theEvent方法。[super mouseDown:theEvent];如果单击位于其中一个子视图中,我才发送该方法。代码:

0 投票
2 回答
2499 浏览

objective-c - 使用 NSBox 突出显示 NSCollectionView 中的选定项目

如何进行NSCollectionView更新以使用 显示当前选定的项目NSBox?在列表中显示选择似乎是一件基本的事情,但我遇到了各种各样的麻烦。

我已经阅读了这个问题,还查看了 Apple 的示例代码。似乎有几种方法可以做到这一点。

  1. 使用子类NSCollectionViewItem和特殊的“原型视图”。
  2. 使用NSBox.

我希望使用这种NSBox方式,因为它看起来很简单,并且也在官方代码示例中使用。

它显然是按照alternegro的以下引用所述完成的:

如果不同的背景颜色足以作为突出显示,您可以简单地使用 NSBox 作为您的集合项目视图的根项目。用您选择的突出显示颜色填充 NSBox。将 NSBox 设置为自定义,以便填充工作。将 NSBox 设置为透明。

将 NSBox 的透明度属性绑定到 File Owner(Collection Item) 的选定属性 将透明绑定的值转换器设置为 NSNegateBoolean。

我被困在第一部分:“使用 NSBox 作为你(原文如此)集合项目视图的根项目”。我试图将“自定义类”更改为FoobarBox 继承自的NSBox,但这似乎没有帮助,因为我无法将背景颜色更改为蓝色,也无法绑定透明度。任何有关如何在我的 NSCollectionVuew 中显示选择的指针都将不胜感激。

0 投票
1 回答
458 浏览

objective-c - NSCollection 错误:无法从对象 NSImage 创建 NSData

我有一个带有 3 个对象、两个 NSTextField 和一个 NSImageView 的 NSCollectionView。我通过让用户选择一个文件夹然后读取该文件夹的内容来获取我的数据。我提取文件名、路径和类型(文件/文件夹)的嗅探,如果它是一个文件夹,则获取它的图标(使用 NSWorkspace),或者如果它是一个文件,它的图像。(这些应该都是图像文件,有一个过滤器可以检查)。

无论如何,我的绑定似乎是正确的,因为文本字段正在被填充,但 NSImageView 不是,当我尝试将 NSImage 传递给我的模型时,我收到此错误消息。

每当我运行它时,我都会收到以下错误消息:

有人可以指出我正确的方向来纠正这个...谢谢

0 投票
1 回答
300 浏览

cocoa - 如何更改或扩展 NSCollectionView 的委托?

NSCollectionView有一个应该符合的委托NSCollectionViewDelegate

我有一个新协议,它扩展了NSCollectionViewDelegate.

现在,在我的 CollectionViewItem 的控制器类中,我尝试以这种方式调用委托的方法:

我不断收到警告说“未找到实例方法'doSomeWork:'”。

我试着做

但随后我收到警告,“不兼容的指针类型使用 'id' 类型的表达式初始化 'id'。

更改 NSCollectionView 委托协议的正确方法是什么?

0 投票
2 回答
491 浏览

objective-c - NSTextField 后面的 NSCollectionViewItem

我有一个NSTextField关于一个的观点NSCollectionViewItem

当您单击一个项目时,NSCollectionViewItem该项目被选中。

当您单击NSTextField它时,它会获得焦点,但NSCollectionViewItem不会选择文本字段后面的那个。

我想更改最后一个行为,以便文本字段获得焦点并且视图项也被选中。

最好的方法是什么?

0 投票
0 回答
341 浏览

cocoa - 有条件地设置 NSCollectionViewItem 的视图

我有一个NSCollectionView绑定到数组控制器的。这个数组控制器包含一个列表NSDictionary

这些项目有两种类型 - 在字典中定义 - 称为标题和项目。如果类型是标题,我将显示一个名为 headerView 的不同视图。

到目前为止,我通过将此代码放入我的NSCollectionViewItem-subclass 中使其工作:

标题的框架比项目的框架小得多。它大约是高度的一半。

问题是标题和项目都获得相同的帧大小(这是较大的帧)。如何确保集合项的框架与其视图框架相同?