2012-01-31 2 views
1

NSTableView의 선택한 행에 추가 정보가있는 NSPopover을 표시하려고합니다. 이를 위해 나는 그래서 그것을 내 팝 오버를 "연결"할 수있는 선택 행의 뷰 표현에 대한 참조를 가져해야합니다NSTableView rowViewAtRow : 항상 nil 반환

NSInteger row = [[self membersTableView] selectedRow]; 
    NSTableRowView *aView = [[self membersTableView] rowViewAtRow: row makeIfNecessary: YES]; 
    [self setQuickLookPopoverController: [QuickLookPopoverController showPopoverFor: anObject at: aView]]; 

을 상기에서, aView의 결과는 항상 전무하다. Apple documentation에 따르면, 이것은 선택된 행이 주어 졌을 때 뷰 객체를 얻는 방법입니다. 특히 토론의 마지막 문장은 약간 이상해 :

토론이 방법은 먼저 현재 가시 영역에서보기를 표시 반환하려고 시도합니다. 가시적 인보기가없고 makeIfNecessary가 YES이면 준비된 임시보기가 리턴됩니다. makeIfNecessary가 NO이고 뷰가 표시되지 않으면 nil은 이 반환됩니다.

일반적으로 보기가 필요하면 makeIfNecessary를 선택하고 을 사용할 수있는 경우에만보기의 속성 만 업데이트하려는 경우 (일반적으로 보이는 것을 의미) NO를 사용해야합니다.

row가 numberOfRows 내에 없으면 예외가 발생합니다. 결과는 일반적으로 현재 실행 루프 사이클 보다 길게 유지되지 않아야합니다. rowViewAtRow : makeIfNecessary :보기가 필요할 때마다 ...

이 메서드는 항상 nil을 반환하는 이유는 무엇입니까?

답변

1

해결되었습니다. NSTableView의 메서드 (NSRect) rectOfRow: (NSInteger) rowIndex을 사용하여 필요한 행의 프레임을 제공했습니다.

0

나에게 올바른 방향을 보여 주셔서 감사합니다. 나는 똑같은 문제가있었습니다! 다음과 같은 작업을 수행했지만 빈 행 선택을 해제했으며 다음 코드는 안에 있습니다.