Objective c NSOutlineView数据源
我已经在Xcode中创建了一个NSOutlineView(Sourcelist),为它提供了一个出口,并使我的类实现了NSOutlineViewDataSource。然后我Objective c NSOutlineView数据源,objective-c,xcode,cocoa,interface-builder,nsoutlineview,Objective C,Xcode,Cocoa,Interface Builder,Nsoutlineview,我已经在Xcode中创建了一个NSOutlineView(Sourcelist),为它提供了一个出口,并使我的类实现了NSOutlineViewDataSource。然后我[outlineview setDataSource:,我看到它使用数组中的项数创建单元格,但它们都是空的 sub1 = [NSArray arrayWithObjects:@"General Data",@"Most Played", @"Misc",@"Log", nil]; sub2 = [NSArray arrayWi
[outlineview setDataSource:
,我看到它使用数组中的项数创建单元格,但它们都是空的
sub1 = [NSArray arrayWithObjects:@"General Data",@"Most Played", @"Misc",@"Log", nil];
sub2 = [NSArray arrayWithObjects:@"General Data", @"Most Played", @"Misc",@"Log", nil];
items = [NSArray arrayWithObjects:sub1,sub2,nil];
[outlin setDataSource:self];
[outlin reloadData];
- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item
{
return [self outlineView:outlineView numberOfChildrenOfItem:item] != 0;
}
- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item
{
if (item)
if ([item isKindOfClass:[NSArray class]])
return [item count];
else
return 0;
else
return [items count];
}
- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item
{
if (item) {
return [item objectAtIndex:index];
}
else
return [items objectAtIndex:index];
}
- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)theColumn byItem:(id)item
{
if (item) {
if ([item isKindOfClass:[NSArray class]])
return @"YES"; // Return name for this node
else
return item;
}
else
return @"List Root";
}
一切似乎都井然有序,一种it工作方式,除了所有的文本都是空白。它只创建所有根项目,而不创建文本。可能您忘记为NSOutlineView构建一个表列,如下所示:
NSTableColumn *titleColumn = [[[NSTableColumn alloc] initWithIdentifier:@"identifier"] autorelease];
[[titleColumn headerCell] setStringValue:@"Header"];
[self addTableColumn:titleColumn];
[self setOutlineTableColumn:titleColumn];
是否已在Interface Builder中检查大纲视图单元格的绑定?