2011-11-27 89 views
3

我有一個源列表的委託類。但我不知道outlineView:objectValueForTableColumn:byItem:的返回變量應該是什麼類型。NSOutlineView源列表的數據

目前我的代碼看起來是這樣的,所有的結構工作的事情,但沒有顯示文本:

@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

+0

如果你在'return'行設置了一個斷點,它是否曾經在調試器中打過? –

+0

不,它從來沒有達到這一點。 – thomasguenzel

+0

在我看來,您需要編輯您的問題以顯示更多代碼,因爲如果該斷點甚至沒有觸及,那麼您可能沒有正確實施數據源的其他必需方法。至於你原來的問題,你應該能夠返回一個NSString類型,它應該顯示得很好(一旦你實際上擊中該斷點)。 –

回答

7

我想你有基於視圖的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是表格單元格視圖的默認標識符。

+0

的2個文件謝謝!這工作:) – thomasguenzel