2013-03-19 2 views
6

떨어져 들여 쓰기의 몇 수준 면도,하지만 난을 레벨. 어떻게해야합니까?내가하지</em>는 (그들은 어쨌든 독특한 모양을 가지고) 상단 커플 수준을 들여 싶어 <em>개요보기를 NSOutlineView

반환 값에서 2를 빼기 위해 -levelForRow:-levelForItem:을 무시하려고 시도했지만 도움이되지 않았습니다. 나는 또한 프레임의 너비에서 2 * indentationPerLevel을 빼기 위해 -frameOfOutlineCellAtRow:을 무시하려고 시도했으나, 공개 삼각형을 표시하지 않기 때문에 그 중 하나는 도움이되지 못했습니다. 이 문제를 해결할 수있는 방법에 대한 의견이 있으십니까?

개요보기는 NSTreeController에 바인딩되어 기본 데이터 구조를 병합하기 어렵지만 개요보기 대리인을 설정해야합니다.

+0

나에게 스크린 샷을 보여 주거나 원하는 것을 스케치 할 수 있습니까? 어쨌든 내 대답과 스크린 샷을 확인하고 이것이 원하는지 논평 해 주시겠습니까? –

답변

7

해결책은 NSTableView 방법 인 frameOfCellAtColumn:row:을 사용하는 것입니다.

- (NSRect)frameOfCellAtColumn:(NSInteger)column row:(NSInteger)row; 
{ 
    NSRect frame = [super frameOfCellAtColumn:column row:row]; 

    if (column == (NSInteger)[self.tableColumns indexOfObjectIdenticalTo:self.outlineTableColumn]) { 
     if (this-item-or-row-matches-your-conditions) { 
      frame.origin.x -= self.indentationPerLevel; 
      frame.size.width += self.indentationPerLevel; 
     } 
    } 

    return frame; 
} 

이 방법은 셀 기반 및보기 기반 테이블보기 및 개요보기에서 레이아웃을 제어합니다.