자신 만보기
@interface MyOutlineViewController : NSView <NSOutlineViewDataSource,NSOutlineViewDelegate> {
IBOutlet NSOutlineView *myoutlineview;
}
@end
당신이 구현
-(NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item;
-(BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item;
-(id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item;
-(id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item;
이 방법이있을 것이다 .. 그래서 같은 NSOutlineViewDelegate 프로토콜을 준수해야하는 위치를 설정하여 outlineview합니다. 이 뷰를로드 할 때 -(void)viewDidLoad
이 호출되고 사전 정의 된 nib/xib 파일 또는 수동 호출이 로직에 따라 데이터 소스를 채울 수 있도록 설정합니다. 그래서 선택에서의 알림 방법의 triggerd를 호출하고 어디 -(void)viewDidLoad
당신의 myoutlineview
요구에 지금
때문에 자신의보기 알 수
[myoutlineview setDelegate:self];
와 함께 자신의 대리자를 설정합니다. 따라서 알림 로직을이 프로토콜을 준수하는 동일한 View 클래스에 배치 할 수 있습니다.
-(void)outlineViewSelectionDidChange:(NSNotification *)notification {
NSLog(@"selection did change");
}
코드가 유망 해 보이지만 불행히도 나를 위해 작동하지 않습니다. NSNotifactionCenter를 내 응용 프로그램 대리인의 applicationDidFinishLaunching 메서드에 추가했지만 outlineViewSelectionDidChange가 호출되지 않습니다. – crizztus
IB로 기입 된 IBOutlet을 가지고 있으며 개요보기를 가리 킵니까? 그리고 그것을 객체로 전달할 것인가? 통지를 등록 할 때 매개 변수? 아래에서 구현 한 서브 클래 싱 방식이 효과가 있지만, a) 코코아에서 선호하는 기술이 아니며, b) 권장되는 방식보다 훨씬 많은 작업이 필요합니다. –
대리인을 올바르게 설정해야 할 때 추가 관찰자를 설치하지 않아도됩니다. –