2013-04-19 5 views
1

현재 Apple의 SourceView 예제를 사용하고 있습니다.NSOutLineView에서 특정 항목을 가져 오는 방법은 무엇입니까?

작업의 오른쪽 클릭으로 상황에 맞는 메뉴로 응용 프로그램의 하단에있는 메뉴를 변경하고 싶었습니다. 이제 NSMenuDelegate을 구현하고 menuWillOpen 메서드를 사용하여 메뉴에서 조정했습니다.

내가 지금 직면 한 문제는 내가 마우스 오른쪽 버튼으로 클릭 한 개체에 대한 정보를 얻을 수 없다는 것입니다.

항목의 색인을 가져 왔지만 항목 자체를 가져올 수 없습니다.

NSInteger *clickedRow = [myOutlineView clickedRow]; 

나는 이것을 시도했지만 아무 것도주지 않았다.

ChildNode *item = [myOutlineView itemAtRow:clickedRow]; 

누군가 나를 도와 줄 수 있기를 바랍니다.

감사합니다.

답변

2

clickedRow은 어떻게 결정됩니까?
한 가지 잘못된 점은 정수 대신 포인터 (NSInteger *)에 clickedRow을 저장한다는 것입니다.
따라서 itemAtRow:은 실제 행 인덱스 대신 임의의 주소를 사용하여 항목을 조회 할 수 있습니다.
또 다른 것은, itemAtRow:이 이 아니라 NSTreeControllerNode*을 반환한다는 것입니다.
대신

[[myOutlineView itemAtRow:clickedRow] representedObject]; 

사용해야

+0

- (NSInteger) clickedRow; NSTableView에서 기본적으로 제공됩니다. 편의를 위해 변수를 저장했습니다. – elementsense

관련 문제