2011-11-27 1 views
3

소스 목록에 대한 위임자 클래스가 있습니다. 하지만 나는 outlineView의 반환 변수가 무엇인지 모르겠다 : objectValueForTableColumn : byItem :이어야한다. 내 코드는 다음과 같습니다 순간에 NSOutlineView 소스 목록의 데이터

, 모든 구조 가지 작업 만 표시에는 텍스트가 없습니다 :

@interface DataSource : NSObject<NSOutlineViewDelegate,NSOutlineViewDataSource> 

@end 

그리고 제가 예를 들어, 응용 프로그램을 만들었습니다

@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 

하는 .m은 그 차이를 보여주세요. 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