2012-08-16 1 views
0

뷰 기반 모드에서 SourceView (OutlineView)를 TreeController와 함께 사용하기 위해 올바른 바인딩을 설정하는 데 어려움을 겪고 있습니다. 셀 기반 모드에서 올바르게 작동합니다. ≤≤MasterDetail View-Based 모드에서 SourceView를 사용하는 OSX 앱

내가 무엇을 얻을 :

enter image description here

Xcode 프로젝트를 당신이 기분이 경우

불행하게도 나는 설정 헤더 & 제목 텍스트에, 내가 할 모든 빈 물건을 얼마나 찾을 수 없습니다 파고 :

https://www.dropbox.com/s/qz3m9p5vd2qvngb/MasterDetail.zip

는 anot에서 데이터를 툭 그녀의 포스트 :

[ 
    { 
     "itemName": "Item 1", 
     "children": [] 
    }, 
    { 
     "itemName": "Item 2", 
     "children": [ 
      { 
       "itemName": "Item 2.1", 
       "children": [] 
      }, 
      { 
       "itemName": "Item 2.2", 
       "children": [ 
        { 
         "itemName": "Item 2.2.1", 
         "children": [] 
        }, 
        { 
         "itemName": "Item 2.2.2", 
         "children": [] 
        } 
       ] 
      } 
     ] 
    }, 
    { 
     "itemName": "Item 3", 
     "children": [] 
    } 
] 

답변

2

당신은 너무 개요보기 데이터를 표시하는 방법을 알고있는 -outlineView:viewForTableColumn:item: 적어도 구현해야합니다. 개요 View 데이터 소스에서 다음과 같은 메소드를 구현하십시오.

- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item { 

    NSView *cellView = [outlineView makeViewWithIdentifier:@"DataCell" owner:self]; 
    return cellView; 
} 

테스트 된 경우 이것이 프로젝트이고 이제 셀이 표시됩니다. 자세한 내용은 NSOutlineViewData/NSOutlineViewDelegate 프로토콜을보십시오.

+0

바인딩의 목적은 대리인을 없애는 것이라고 생각했습니다. 그러나 이것은 'NSOutlineView' (이 경우에는'AppDelegate')에 대리자를 추가하고 메소드를 구현할 때 효과적입니다. 내 경우,'dataSource'는 일반적인'TreeController'입니다. – Olivier