- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 NSCollectionView,其内容由 NSArrayController 处理。NSCollectionView 是可选的,我需要检索所选元素的列表。我正在尝试观察 NSArrayController“selectionIndexes”的关键属性,但它总是返回 CollectionView 中第一个元素的值,而不是所选项目的值。
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if([keyPath isEqualTo:@"selectionIndexes"])
{
//True if in the array controller of the collection view really exists at least a selected object
if([[arrayController selectedObjects] count] > 0)
{
NSLog(@"Selected objects: %@", [arrayController selectedObjects]);
}
else
{
NSLog(@"Observer called but no objects where selected.");
}
}
}
更新
我从来没有调用过这个方法,如果我手动调用 NSLog(@"Selected objects: %@", [arrayController selectedObjects]) 我会得到这个
结果总是这样
结束更新
2011-07-05 20:44:45.711 collectionView2[2153:903] Selected objects 1: (
"<Hormiga: 0x10013e330>"
)
我想我在将 NSArrayController 与 NSCollectionView 绑定(bind)时做错了。我的错是什么?如果您需要更多信息,请告诉我,如果您需要,我什至可以将整个程序以 zip 格式发布。
这是我在 Controller 中用来观察 arrayController“selectionIndexes”键的代码。
[arrayController addObserver:self forKeyPath:@"selectionIndexes" options:NSKeyValueObservingOptionNew context:nil];
其中一个问题已解决,我忘记设置 NSArrayController 和 NSCollectionView 之间相对于键“selectionIndexes”的绑定(bind)。现在我可以手动检索 selectedObject 的列表及其正确的!
我的最后一个问题是当 selectionIndexes 发生变化时我没有收到通知。所以 observeValueForKeyPath:ofObject:change:context: 永远不会被调用!
我试图在我的 Controller 的 init 方法中设置观察者,但这样 arrayController 仍然为 null。在 awakeForNib 中移动 addObserver 解决了我所有的问题!
最佳答案
如果你想保持数组 Controller 的选择索引与 Collection View 的同步,你也需要绑定(bind)它们。总结:
Content
到数组 Controller ,key arrangedObjects
Selection Indexes
绑定(bind)到数组 Controller ,key selectionIndexes
。此外,请确保在添加观察者之前已设置 arrayController
。保证在 -awakeFromNib
和之后调用的其他方法中设置导出:如果您使用的是窗口 Controller ,则可以使用 -windowDidLoad
;如果您使用的是 View Controller ,则可以使用 -loadView
;否则,-applicationDidFinishLaunching:
在您的应用程序委托(delegate)中。
关于objective-c - NSArrayController 上的 SelectionIndexes 只返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6587419/
正在完成我的第一个 Cocoa OS X 项目,其中我获取远程 XML 数据并将对象存储在 NSMutableArray 中。 今天,当我在项目中第一次打开IB时,我发现了对象NSArrayContr
我是 Objective-C 的新手,到目前为止我很喜欢它。然而,我似乎在兜圈子。我试图在不编写代码的情况下做尽可能多的事情。是否可以有效地将一个 NSArrayController 的内容集绑定(b
我有一个简单的 NSArrayController 连接到我的 coreData 模型之一。我可以轻松地显示 NSTableView 中的所有项目,没有问题,但是,如果我尝试将包含 NSPopUpBu
在我的 MainController 中,有一个 Person 数组,它绑定(bind)到 NSArrayController。人员姓名显示在表name 列中。如果我将一个按钮绑定(bind)到 NS
我有一个连接到 NSManagedObjectContext 的 NSArrayController。此外,我有一个 NSTableView,其内容和选择索引绑定(bind)到所述 NSArrayCo
我正在 Xcode 控制台中检查 NSArrayController 的数量,我得到了这个: (lldb)po [_myArrayAC.content count] nil 但是如果我尝试检查该值是
我在使用 NSArrayController rearrangeObjects 函数时遇到了麻烦 - 该函数是从某些后台步骤调用的,有时应用程序会因错误而崩溃:“endUpdates 在没有 begi
我刚刚意识到有两种方法可以使用 NSArrayController。 将 Controller 绑定(bind)到数组并向数组添加对象。或者根本不使用任何数组,直接将对象添加到 Controller
我正在开发一个 Mac 应用程序,并且正在努力让谓词过滤器正常工作。对于 NSArrayController,使用 fetch 与过滤谓词的方式有什么不同吗? 我正在使用 Core Data 来存储我
我想使用 NSArrayController 向 NSTableView 提供数据。我面临的问题是我不想将所有数据预先加载到数组中,然后使用数组 Controller setContent: 方法。我
我有一个示例项目 https://github.com/ericgorr/LazyFetching 设置非常简单。在我的 CoreData 模型中,我有两个实体: 具有 name 属性和与 Item
非常简单的问题让我抓狂:以编程方式清除 NSArrayController 选择的正确方法是什么? 我正在设计一个包含以下组件的 View : NSArrayController *controlle
我无法让核心数据支持的 NSArrayController 在我的代码中正常工作。下面是我的代码: pageArrayController = [[NSArrayController alloc] i
我正在努力将通过拖放(文件从 finder 到 NSView)接收到的变量传递给 AppDelegate 中的 NSArrayController。 NSView 接收拖放: class MyView
我在我的 OS X 应用程序中使用 Core Data,我将一些 TableViews 绑定(bind)到 NSArrayControllers。我遇到的问题是,当我尝试使用数组 Controller
我在过滤 NSArrayController 时遇到问题。内容数组绑定(bind)到一个包含 NSDictionaries 的 NSMutableArray。我想过滤所有“名称”键等于“a”的 NSD
我有一个 NSArrayController,其内容是我的 AppDelegate 的“servers”属性。 我有一个 NSTextField ,它绑定(bind)到 NSArrayControll
我有一个链接到核心数据模型的 NSArrayController 子类。在我调用的方法之一中 [self performSelectorInBackground:@selector(someLongE
也许我不明白如何正确使用 NSArrayController,但这是我的情况。 我的实体设置如下:帐户 -> 文件夹 -> 聊天。因此,我将针对特定文件夹实体进行大量聊天。我希望我的数组 Contro
我有一个 NSArrayController,它返回一个 NSManagedObjects 数组,但是我只对在 NSTableView 中显示这些对象的某些属性感兴趣,并且不需要所有这些属性。有没有办
我是一名优秀的程序员,十分优秀!