I have a flawless functioning view-based NSOutlineView
with a proper set-up datasource in my project. Now I want to allow the user to change certain entries. So I made the NSTextField
in the IB editable. For a cell-based NSOutlineView
you can use the delegate method outlineView:setObjectValue:forTableColumn:byItem:
however it's not available for a view-based NSOutlineView
as stated in the header file for the NSOutlineViewData
protocol:
/* View Based OutlineView: This method is not applicable. */
(void)outlineView:(NSOutlineView *)outlineView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn byItem:(id)item;
So I searched for another delegate method and found outlineView:shouldEditTableColumn:item:
. However this delegate method doesn't get fired. Probably because I'm not editing a cell.
So my question is: Is there any other way to notice when a row changed than having a delegate for each NSTextField
?
Well, it seems like Apple wants us to use the delegate methods of each NSTextField
as stated here:
This method is intended for use with cell-based table views, it must not be used with view-based table views. Instead target/action is used for each item in the view cell.
So there's currently no other way to do this.