问题标签 [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.
objective-c - NSCollectionViewItem 双击动作?
当用户双击一个NSCollectionViewItem
. NSTableView
,例如,有setDoubleAction
方法。有类似的东西NSCollectionView
吗?
谢谢
objective-c - NSCollectionView 什么也没画
我正在尝试设置一个NSCollectionView
(我过去已经成功地做到了这一点,但由于某种原因这次失败了)。
我有一个名为“TestModel”的模型类,它有一个NSString
只返回一个字符串的属性(现在仅用于测试目的)。然后我在我的主应用程序委托类中有一个NSMutableArray
属性声明,并向这个数组添加TestModel
对象的实例。
然后我有一个数组控制器,它的内容数组绑定了应用程序委托的NSMutableArray
. 我可以确认到目前为止一切正常;NSLogging:
工作正常。
然后,我为集合视图设置(itemPrototype 和内容)以及集合视图项(视图)设置了所有适当的绑定。然后,我在绑定到 Collection View 的集合项视图中有一个文本字段Item.representedObject.teststring
。但是,当我启动应用程序时,集合视图中没有显示任何内容,只是一个空白的白色屏幕。我错过了什么?
更新:这是我使用的代码(由 wil Shipley 要求):
然后就像我说的,Array Controller 的 content 数组绑定到这个“objectArray”,NSCollectionView 的 Content 绑定到 Array Controller.arrangedObjects。我可以通过 NSLogging [arrayController mappedObjects] 验证 Array Controller 中是否包含对象,并且它返回正确的对象。只是在 NSCollectionView 中没有显示任何内容。
更新 2:如果我记录 [collectionView 内容],我什么也得不到:
问题可能就在那里。
更新 3:这里要求的是 Xcode 项目:
http://www.mediafire.com/?mjgdzgjjfzw
它是一个菜单栏应用程序,所以它没有窗口。当您构建并运行应用程序时,您会看到一个显示“测试”的菜单栏项,这将打开包含 NSCollectionView 的视图。
谢谢
objective-c - 调整 NSCollectionViewItem 的视图大小
如何以编程方式设置 NSCollectionViewItem 的视图大小?
我尝试在 NSCollectionView 子类中这样做:
但是,此代码无效。我尝试将我用于 NSCollectionViewItem 的 NSView 子类化,并将 setFrame: 添加到 initWithCoder 方法,但是当我这样做时,我遇到了 EXC BAD ACCESS 崩溃。
objective-c - 在 Scroll 上重绘 NSCollectionView 会导致图形中断
当我滚动窗口时,我有一个轻微的刺激,NSCollectionView
其中NSCollectionViewItem
's 在视觉上会破裂。
分解的速度取决于滚动的速度。例如,如果我慢慢滚动,分手会更频繁地发生。快速滚动较少。看来问题出在NSCollectionViewItem
我正在使用的自定义 NSView 越过可视框架的边界时。
我的 NSView(自定义视图NSCollectionViewItem
)有一个非常简单的绘图算法 - 没什么太复杂的。
本质上,我在 drawRect 方法的 dirtyRect 中创建了一个框架,并在其中创建了一些框架:
我已经尝试在代码之前和之后锁定焦点并释放,以及设置图形上下文并恢复它——这些似乎都不能解决问题。
我正在使用 Snow Leopard - 我认为这并不重要。
解决方案更新
对于任何对此感兴趣的人,都是 NSResponder 推荐的问题的解决方案。mOuterFrame
我是根据所指出的drawRect:
方法创建初始值,这是不正确的做法。dirtyRect
快速变化:
到基于 0 的起始点:
我还调整了代码的效率,因为我只使用矩形,正如建议的那样,尽管上面的代码更改足以解决问题本身。我必须添加一个更改以获得两像素线。新方法:
objective-c - NSCollectionView 中的选择突出显示
我有NSCollectionView
一个次要但关键的例外情况。获取并突出显示集合中的选定项目。
在 Snow Leopard 之前,我已经完成了所有这些工作,但似乎发生了一些变化,我无法完全确定它,所以我NSCollectionView
回到了基本测试,并按照 Apple 的文档在此处创建 NSCollectionView:
按照快速入门指南,集合视图可以正常工作。但是,本指南不讨论除"There are such features as incorporating image views, setting objects as selectable or not selectable and changing colors if they are selected"
.
以此为例,我进入下一步,NSCollectionView
使用控制器键将 Array Controller 绑定到selectionIndexes
,认为这将绑定我在NSCollectionView
和 数组控制器之间所做的任何选择,从而触发 KVO 通知。我还将NSCollectionView
IB 设置为可选。
似乎没有选择委托,NSCollectionView
并且与大多数 Cocoa UI 视图不同,似乎没有默认选择的突出显示。
所以我的问题真的归结为一个相关的问题,但是两个不同的问题。
- 如何捕获对项目的选择?
- 如何显示项目的亮点?
NSCollectionView
的编程指南似乎少之又少,大多数通过 Google 进行的搜索似乎都提取了 Snow Leopard 之前的实现,或者在单独的 XIB 文件中使用视图。
对于后者(视图的单独 XIB 文件),我不明白为什么这应该是先决条件,否则我会怀疑 Apple 不会将视图包含在与集合视图项相同的包中。
我知道这将是一个“只见树木不见森林”的问题——所以我已经准备好迎接“doh!”。片刻。
像往常一样,非常感谢任何和所有帮助。
更新 1
好的,所以我想找到选定的项目,但还没有想出突出显示。对于对确定所选项目感兴趣的人(假设您遵循 Apple 指南):
在控制器(在我的测试用例 App Delegate 中)中,我添加了以下内容:
在 awakeFromNib
新方法
不要忘记为非 GC 解除分配
仍在寻找高光分辨率...
更新 2
接受了 Macatomy 的建议,但仍有问题。发布相关的类方法,看看我哪里出错了。
我的视图.h
我的视图.m
我的CollectionViewItem.h
"MyCollectionViewItem.m*
objective-c - 想要使用该视图上的删除按钮删除特定的 collectionview 项目
我有一个集合视图项及其原型视图。在该原型视图中,我有一个小 x 按钮。我希望该按钮可以删除它所在的确切集合视图项。
如果我单击 x 按钮周围的空间,我可以删除选定的项目,但如果我在单击项目之前直接单击按钮,它只会删除最后一个选定的项目。
想法?
objective-c - NSCollectionViewItem 中的自定义控件
我想在我的 NSCollectionViewItem 的视图中放置一个自定义控件。
假设我有一个名为 BoxesView 的自定义 NSView。BoxesView 只是一个在其视图中绘制预定数量的框的视图。该数量的盒子是在 init 方法中设置的。假设我将其设置为 8。
当我加载集合视图时,视图中的所有其他控件都可以正常工作(按钮、滑块等),但我的视图不会绘制。
如果我在 BoxesView 的 drawRect 方法中设置断点,则显示要绘制的框数为 0!如果我在 init 方法中设置断点,将 numBoxes 设置为 8,则表明 numBoxes 实际上设置为 8。此外,即使集合视图中有多行,init 方法也只会被调用 1 次。
我究竟做错了什么?
更新
我可以通过将 itemPrototype 设置为从 xib 加载而不是与 NSCollectionViewItem 在同一个 xib 中来实现此功能。这很好,除了它只适用于 10.6 而不是 10.5。
更新 2
我想要做的是将我的自定义视图粘贴在已经存在的 NSCollectionViewItem 的视图中。发生的情况是成员变量 mBoxWidth 被吹走并且为零,所以当它去绘制它时,什么也没有发生。
@结尾
cocoa - 将值从自定义 NSView 传递到 NSCollectionViewItem
我的自定义 NSView 中有一个 NSTabView,用作 NSCollectionView 的原型。在第二个选项卡中,我有 NSButton 按钮和 NSImageView 对象。
NSButton 是触发 NSOpenPanel 的“浏览”按钮。
我已将按钮的选择器连接到 MyCustomView 中的 IBAction,它执行以下操作:
当我在控制台中运行此“myImageView”跟踪“null”时,即使我在 Interface Builder 中将其连接为 IBOutlet。你能解释一下为什么吗?我应该怎么做呢?我还需要在我的 NSCollectionViewItem 对象中将“fileURL”值传递给“representedObject”,但我不知道如何从这里访问它?
objective-c - NSCollectionViewItem 的项目出口的 NSView 子类没有一致地绘制
我到处寻找这个但没有运气。我在我的项目中使用 NSCollectionView 通过数组控制器绑定到核心数据。为了让它看起来像我想要的那样,我用一个新的 drawRect 方法对 NSView 进行了子类化,并将它与 NSCollectionViewItem 的视图出口连接起来。一切正常,绑定很好,但由于某种原因,它只会在集合视图中的第一个项目上执行自定义绘图。我猜这与 NSCollectionView 在创建新项目时复制笔尖的事实有关。首先是我的 drawRect: 方法:
@结尾
有任何想法吗?
objective-c - 使用没有绑定的 NSCollectionView
有没有办法使用NSCollectionView
没有绑定的?