2012-01-01 6 views
5

뷰 기반 NSOutlineView가 NSTreeController에 바인딩되었습니다. 내 델리게이트에 outlineView:isGroupItem: 메서드를 구현할 때까지 모든 것이 올바르게 작동하는 것 같습니다. 그런 다음 그룹 헤더가 갑자기 나타나지 않게되었습니다. 이뷰 기반 NSTableView/NSOutlineView 및 isGroupItem

enter image description here

처럼 내가하는 NSOutlineView을 변경한다면 다음 셀 기반 그룹 항목이 제대로 표시되는지 확인했다. NSTableView에서도 비슷한 동작이 관찰됩니다. 다른 사람이이 문제를 겪었습니까?

답변

11

해결했습니다!

는 열과 같은 식별자 뷰를 위치시킴으로써 NSOutlineView가 테이블의 각 셀에 대한 뷰를 생성 계의 기본 관점으로, I는

- (NSView *)outlineView:(NSOutlineView *)outlineView 
    viewForTableColumn:(NSTableColumn *)tableColumn 
        item:(id)item { 
    if ([self outlineView:outlineView isGroupItem:item]) { 
     NSString *vId = [[[outlineView tableColumns] objectAtIndex:0] identifier]; 
     return [outlineView makeViewWithIdentifier:vId owner:self]; 
    } 
    return [outlineView makeViewWithIdentifier:[tableColumn identifier] owner:self]; 
} 

명백하게 NSOutlineView 대리인의 다음 방법을 구현하도록했다 밖으로 켜지고 . 그러나 그룹 항목/그룹 행의 경우 해당 행과 연관된 tableColumm이 없으므로보기가 표시되지 않고 표시되지 않습니다.

사과와 함께 놀아 TableViewPlayground sample project 정말 도움이되었습니다! 추천!

+0

자세한 업데이트를 보내 주셔서 감사합니다. –

+0

+1 TableViewPlayground 참조의 경우 – rluba

+0

[공식 NSOutlineViewDelegate 문서] (https://developer.apple.com/library/mac/documentation/cocoa/reference/)의 'outlineView : viewForTableColumn : item :'이 아닌 이유는 무엇입니까? NSOutlineViewDelegate_Protocol/Reference/Reference.html) – zakdances

관련 문제