- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为了支持与 Swift 和 ObjC 不同的语言,我需要了解如何设置 NSTreeController
对于 NSOutlineView
.
我已经能够创建 NSOutlineView
在代码中,以及提供我自己的 DataSource 委托(delegate)。但现在我喜欢改用 NSTreeController
.我很难弄清楚如何设置绑定(bind)和其他关系,因为我能找到的所有示例都假设使用 Interface Builder 进行设置。
最佳答案
我想我现在已经弄清楚了基础知识。作为记录,这是我必须添加到已经管理 NSOutlineView 的 View Controller 中的内容,我自己在其中管理数据源:
为树节点创建一个类:
@interface DataNode : NSObject {}
@property (retain) NSMutableArray *children;
@property (retain) NSString *firstText; // text for 1st column
@property (retain) NSString *secondText; // text for 2nd column
@end
@implementation DataNode
- (instancetype)init {
self.children = [NSMutableArray array];
return self;
}
- (BOOL) isLeaf {
return self.children.count == 0;
}
@end
@property (nonatomic, retain) NSTreeController *treeController;
@property (nonatomic, retain) NSMutableArray *treeContents;
awakeFromNib
:
self.treeContents = [NSMutableArray array]; // holds the add nodes
self.treeController = [[NSTreeController alloc] init];
[self.treeController setLeafKeyPath:@"isLeaf"]; // refers to DataNode
[self.treeController setChildrenKeyPath:@"children"]; // refers to DataNode
// set up the bindings
[self.treeController bind:@"contentArray" toObject:self withKeyPath:@"treeContents" options:@{NSRaisesForNotApplicableKeysBindingOption:@YES, NSConditionallySetsEditableBindingOption:@YES}];
[self.table bind:@"content" toObject:self.treeController withKeyPath:@"arrangedObjects" options:@{NSAlwaysPresentsApplicationModalAlertsBindingOption:@YES}];
[self.table bind:@"selectionIndexPaths" toObject:self.treeController withKeyPath:@"selectionIndexPaths" options:@{}];
[self.table bind:@"sortDescriptors" toObject:self.treeController withKeyPath:@"sortDescriptors" options:@{}];
DataNode *node = [[DataNode alloc] init];
node.firstText = [NSString stringWithFormat:@"1 - %d", i1];
node.secondText = [NSString stringWithFormat:@"2 - %d", i1];
NSIndexPath *loc = [NSIndexPath indexPathWithIndex:self.contents.count]; // appends to end of list
[self.treeController insertObject:node atArrangedObjectIndexPath:loc];
-(NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item {
return 0; // never called (due to using NSTreeController)
}
-(id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item {
return nil; // never called (due to using NSTreeController)
}
-(BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item {
return NO; // never called (due to using NSTreeController)
}
-(id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item {
DataNode *node = [item representedObject];
return [node valueForKey:tableColumn.identifier];
}
objectValueForTableColumn
方法假定表列的标识符已设置为
firstText
和
secondText
, 分别。
关于macos - 以编程方式将 NSTreeController 绑定(bind)到 NSOutlineView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42788993/
我有一个 NSTreeController 来管理一个实体(核心数据模型)和一个 NSOutlineView 来显示该树。 我希望树显示一些与底层核心数据模型中的实体不对应的特殊节点。我该怎么做呢?我
当 NSTreeController -(void)addChild:(id)sender 被调用时,有没有办法获取创建的 NSManagedEntity ? 文档提到此方法的结果被推迟到下一个循环运
背景 我在我的 Cocoa 应用程序中构建了一个源列表(类似于 iTunes 等)。 我有一个带有 Value 的 NSOutlineView绑定(bind)到arrangedObjects.name
我有一个(我认为)非常简单的情况,其中 NSTreeController 绑定(bind)到根对象数组,每个根对象可能有一些子对象。我正在使用 NSBrowser 来展示它们。 它们显示良好并且层次结
我有一个 NSTreeController,它绑定(bind)到一个类。 NSOutlineView dirTree 绑定(bind)到 NSTreeController 特别是大纲 View 内容绑
我在程序中将 NSTreecontroller 与 NSOutlineView 结合使用,并且我的程序不断抛出:malloc: *** error for object 0x1d70d0: doubl
我正在开发桌面可可应用程序。在应用程序中,我有一个基于视图的NSOutlineView绑定到NSTreeController: NSTreeController处于实体模式,由Core Data驱
在 Marcus Zarra 的《核心数据》一书中的第 40 页中,他建议,由于 NSTreeController 需要相同的 key 来访问层次结构中的所有对象(例如子对象),并且这可能意味着意义不
我有一个 NSTreeController (向 NSOutlineView 提供内容)。我希望顶级对象属于一个类,而所有其他对象(因此,任何级别的子对象)属于另一个类。解决这个问题的最佳方法是什么?
正如你们中许多人可能知道的那样,绑定(bind)到大纲 View 的 NSTreeController 可以在呈现核心数据实体时显示重复项。 临时解决方案是在谓词中添加“parent == nil”,
我是 Swift 新手,正在尝试学习如何使用 NSOutlineView 实现 NSTreeController。我一直在遵循几个显示此类示例的指南,但我不断收到错误。我一步一步地遵循和/或尝试运行他
我有一个非常基本的应用程序:一个带有绑定(bind)到 NSTreeController 的 NSOutlineView 的窗口。大纲 View 显示一个简单的模型对象 (TCCard)。我添加了两个
在我的项目中,NSTreeController 绑定(bind)到 NSOutlineView( cocoa 绑定(bind))。由于某种原因我无法使用NSPredicate从Core Data中过滤
背景 带有 GC 的 Snow Leopard 10.6.4 上的核心数据应用 我有一个由 NSTreeController 使用绑定(bind)支持的 NSOutlineView 我正在后台 NSO
我正在尝试将 NSTreeController 的“arrangedObjects”绑定(bind)到自定义 View 的“managedContent”(例如,以便它可以显示自定义轮廓)。在 set
好的各位,这是我的问题。 我将使用 CoreData + Source List + NSTreeController 创建类似于 Finder(或 iTunes,如果您愿意)的源列表的内容。 我的问
有人知道一个好的解决方法或黑客从 NSTreeController add: 或 addChild: 方法获取指向新创建的节点的指针吗? 最佳答案 一种方法是让它选择插入的对象,然后调用 select
如何使用搜索框来过滤 NSOutlineView/NSTreeController?我知道这与绑定(bind)和谓词有关。但没有具体说怎么做。有人可以指导我完成过滤 NSOutlineView/NST
我有一个简单的 NSOutlineView 绑定(bind)到 NSTreeController,它提供对我的分层数据模型的访问。我想将其设为主/详细 View ,并在某些绑定(bind) View
给定 NSTreeController 表示的模型对象,如何在树中找到它们的索引路径并随后选择它们?这似乎是一个非常明显的问题,但我似乎找不到任何引用。有什么想法吗? 最佳答案 没有“简单”的方法,您
我是一名优秀的程序员,十分优秀!