tho*_*zel 3 cocoa objective-c nsoutlineview
我有一个源列表的委托类.但我不知道outlineView的返回变量是什么类型:objectValueForTableColumn:byItem:应该是.
在片刻,我的代码看起来像这样,所有结构都可以工作,但没有显示文字:
@interface DataSource : NSObject<NSOutlineViewDelegate,NSOutlineViewDataSource>
@end
Run Code Online (Sandbox Code Playgroud)
还有他们
@implementation DataSource
// Data Source methods
- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item {
return (item == nil) ? 1 : [item numberOfChildren];
}
- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item {
return (item == nil) ? YES : ([item numberOfChildren] != -1);
}
- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item {
return (item == nil) ? [FileSystemItem rootItem] : [(FileSystemItem *)item childAtIndex:index];
}
//-(id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item
-(id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item {
return @"Some String";
}
@end
Run Code Online (Sandbox Code Playgroud)
我已经做了一个示例应用程序来显示差异.图像在这里
我想你有基于视图的NSTableView.在你委托你应该实现方法- (id)outlineView:(NSOutlineView *)ov viewForTableColumn:(NSTableColumn *)tableColumn.它可能看起来像这样:
- (id)outlineView:(NSOutlineView *)ov viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item{
if ([[item representedObject] parent] == nil) {
return [ov makeViewWithIdentifier:@"HeaderCell" owner:self];
}else{
return [ov makeViewWithIdentifier:@"DataCell" owner:self];
}
}
Run Code Online (Sandbox Code Playgroud)
HeaderCell并且DataCell是表格单元格视图的默认标识符.