【问题标题】:Data for NSOutlineView Source ListNSOutlineView 源列表的数据
【发布时间】:2011-12-05 16:18:58
【问题描述】:

我有一个源列表的委托类。但是我不知道outlineView:objectValueForTableColumn:byItem:的返回变量应该是什么类型。

目前我的代码看起来像这样,所有的结构都可以工作,但没有显示文本:

@interface DataSource : NSObject<NSOutlineViewDelegate,NSOutlineViewDataSource>

@end

还有.m

@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

我制作了一个示例应用程序来展示差异。 Image is here

【问题讨论】:

  • 如果你在return 行设置断点,它会在调试器中命中吗?
  • 不,它永远不会达到这一点。
  • 在我看来,您需要编辑您的问题以显示更多代码,因为如果该断点甚至没有命中,那么您可能没有正确实现数据源的其他必需方法。至于你原来的问题,你应该能够返回一个 NSString 类型,它应该显示得很好(一旦你真的打了那个断点)。
  • 现在代码包含了来自委托对象的 2 个文件

标签: objective-c cocoa nsoutlineview


【解决方案1】:

我想你有基于视图的 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];
    }
}

HeaderCellDataCell 是表格单元格视图的默认标识符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多