A good way to change the disclosure image is to use a view based on the view:
In your ViewController with NSOutlineViewDelegate:
- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item
{
CustomNSTableCellView *cell = [outlineView makeViewWithIdentifier:tableColumn.identifier owner:self];
cell.item = item;
return cell;
}
You must subclass NSOutlineView and override the method:
- (id)makeViewWithIdentifier:(NSString *)identifier owner:(id)owner
{
id view = [super makeViewWithIdentifier:identifier owner:owner];
if ([identifier isEqualToString:NSOutlineViewDisclosureButtonKey])
{
[view setImage:[NSImage imageNamed:@"Disclosure_Categories_Plus"]];
[view setAlternateImage:[NSImage imageNamed:@"Disclosure_Categories_Minus"]];
[view setBordered:NO];
[view setTitle:@""];
return view;
}
return view;
}
- (NSRect)frameOfOutlineCellAtRow:(NSInteger)row
{
NSRect frame = NSMakeRect(4, (row * 22), 19, 19);
return frame;
}
Rikco source
share