Ваше собственное представление должно соответствовать протоколу NSOutlineViewDelegate следующим образом.
@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;
где вы настраиваете свой контурный вид.
При загрузке этого представления вызывается -(void)viewDidLoad
, и ваш предопределенный файл nib / xib или ваш ручной вызов установит ваш источник данных для его заполнения в зависимости от вашей логики.
Теперь в вашем -(void)viewDidLoad
ваш myoutlineview
должен установить свой собственный делегат с помощью
[myoutlineview setDelegate:self];
так что ваш собственный View может знать, где вызывать его методы уведомлений, вызванные выборами, и так далее. Таким образом, вы можете поместить свою логику уведомлений в тот же класс View, соответствующий этому протоколу.
-(void)outlineViewSelectionDidChange:(NSNotification *)notification {
NSLog(@"selection did change");
}