- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Cocoa 开发的新手,它的很多概念我都不清楚......我正在尝试构建一个简单的应用程序,它将使用 Flickr API 检索用户照片集并将其显示在 NSCollectionView 中,通过单击它们,将开始下载照片集的照片。
我正在使用 Xcode 5.0.1 和最新的 SDK 10.9
在阅读了一些有关如何使用绑定(bind)来处理 NSCollectionView 的文章后,我现在面临着另一个关于处理 NSCollectionViewItem 中的事件的问题。
据我了解,鼠标事件可以通过实现轻松处理
-(void) mouseDown:(NSEvent *)theEvent
在 NSView 子类中,比如说
@interface MyViewController : NSView {
}
并将 View 自定义类分配给我在InterfaceBuilder中创建的子类(MyViewController)。
现在,我按照上面的操作没有问题,并且 mousedown 确实在大多数小部件中按预期处理。问题是,我有一个 NSCollectionViewItem 子类,如下所示:
@interface MyItemController : NSCollectionViewItem {
}
我正在尝试在那里实现 mousedown 方法,该类被设置为单独的 nib 文件中的文件所有者。当 NSCollectionView 加载时, View 将自动加载。
现在,MyItemController 不能作为 IB 中 View 对象中的客户类,这显然是因为它不是 NSView 子类,而是 NSCollectionViewItem 子类。
如果我编写 NSView 的子类并制作 View 对象的自定义类,我可以获得 mousedown。但是,我无法通过这种方法获取 NSMutableArray 的representedObject 和索引,而它们是我需要的基本信息。
所以我的问题是,处理 NSCollectionViewItem 的鼠标事件 View 的正确方法是什么?我在 GitHub 中的代码在这里:
https://github.com/jasonlu/flickerBackupTool
谢谢!
我发现解决这个问题的方法是通过子类化 NSView 并实现 mousedown 并使用 super、 subview 来获取和索引以及数组本身
- (void)mouseDown:(NSEvent *)theEvent {
NSCollectionView *myCollectionView = (NSCollectionView *)[self superview];
NSInteger index = [[myCollectionView subviews] indexOfObject:self];
NSLog(@"collection view super view: %@",myCollectionView);
NSLog(@"collection index: %ld",index);
NSLog(@"array: %@", [[myCollectionView content] objectAtIndex:index]);
}
这似乎可行,但我不起诉这是否是最佳实践,它看起来过于依赖 View ,并且花了很长的路才能到达数组。
最佳答案
我不敢打赌 NSCollectionView 总是创建所有 subview (远离查看区域的 subview 可能会被延迟和/或重用)。因此,我不会依赖 subview 搜索。
重载NSViewController来创建一个NSView,以便可以从NSView访问分配给NSViewController的representedObject。从那里您可以搜索实际内容以确定索引。
在 View 创建期间重载 NSCollectionView 并记录实际索引可能效果不佳,因为删除的项目可能不会重新创建任何 View 。
关于cocoa - 单击 NSCollectionViewItem View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19919093/
如何通过再次单击 NSCollectionViewItem 来取消选择它? 这是我用于选择和取消选择的代码: func collectionView(collectionView: NSCollect
我正在尝试设置一个 NSCollectionView,它在各个 NSCollectionViewItem View 中具有自定义绘图。我需要在每个 View 中绘制一个图像,但无法将该 View 链接
简单的问题,但我找不到任何答案...如何更改 NSCollectionViewItem 实例的角半径? 最佳答案 NSCollectionViewItem 的 view 默认没有图层。你需要设置wan
我有一个绑定(bind)到 NSCollectionView 的 NSArrayController。我的数据模型是一个类 Person。 Inside Person 是一个计时器,每秒都会更改 ag
我正在尝试为我的 NSCollectionViewItem 提供动态大小。我希望它们的大小由它们的内容和我定义的约束决定。 为此,我已将以下内容添加到包含 NSCollectionView 的 Vie
我在这里有点迷路:我创建了一个像 colorPicker 一样的按钮:单击它会在弹出窗口中显示一个 collectionView。我首先使用包含 View + collectionView(嵌入为 s
我想在 NSCollectionViewItem 的 View 中放置一个自定义控件。 假设我有一个名为 BoxesView 的自定义 NSView。BoxesView 只是一个在其 View 中绘制
我是 Cocoa 开发的新手,它的很多概念我都不清楚......我正在尝试构建一个简单的应用程序,它将使用 Flickr API 检索用户照片集并将其显示在 NSCollectionView 中,通过
我觉得这是一个简单的任务,但我似乎无法让它发挥作用。我正在尝试使用带有自定义项目的 NSCollectionView 。我向该项目的自定义 View 添加了另一个 NSImageView,并对该 Vi
我正在尝试创建一个 NSCollectionView,其中的项目适应可用空间,而不是为项目定义固定大小并相应地调整 NSCollectionView 的大小。 我无法找到使用 NSCollection
我正在尝试构建一个充满多个可编辑 TextView 的 NSCollectionView。 (Swift 中的 OS X 应用程序。)我的 NSCollectionViewItem 子类称为 Note
我正在尝试以编程方式创建一个简单的 NSCollectionView。我在 NSViewController 中设置它: class ViewController: NSViewController
我正在使用 NSCollectionView 和 NSCollectionViewItems。 我遇到了以下问题:如果我旋转其中一项的 NSImageView,然后调用 reloadData,更新的
我正在编写一个非常简单的 macOS 应用程序,我想在 Collection View 中显示一些图像。对于它们的显示方式,我不需要任何特殊行为。 docs for NSCollectionViewI
我有一个问题。如何将鼠标右键菜单添加到 NSCollectionViewItem。作为尝试,我还使用了 Apple 的演示应用程序 IconCollection。我尝试将 NSMenu 拖到 Icon
在我的设置中,我有一个连接到 Mac 的卷的 NSCollectionView。对于 NSCollectionViewItem 的 View ,我有一个 NSBox,其中有一个 NSTableView
我在 NSCollectionViewItem 的 View 上有一个 NSTextField。 当您单击 NSCollectionViewItem 时,该项目将被选中。 当您单击 NSTextFie
我一直在努力尝试创建一个 NSCollectionView,它具有一组带有自定义 View 的 NSCollectionViewItems。当项目 View 上的控件是标准 AppKit 控件时,代码
我的自定义 NSView 中有一个 NSTabView,用作 NSCollectionView 的原型(prototype)。在第二个选项卡中,我有 NSButton 按钮和 NSImageView
override func viewDidLoad() { super.viewDidLoad() // Do view setup here. let item = NSNi
我是一名优秀的程序员,十分优秀!