Dynamically populated NSPopUpButtonCell menu in an NSOutlineView
Posted
by Mo
on Stack Overflow
See other posts from Stack Overflow
or by Mo
Published on 2010-04-24T10:53:35Z
Indexed on
2010/04/24
11:03 UTC
Read the original article
Hit count: 335
I’m working with an NSOutlineView
which has two columns. My dataSource
supplies the outline view with a tree of items of a custom class which represents file types (that is, you initialise it with a UTI). The first column is the display name of the file type (e.g., “Source code”, “Interface Builder NIB document”, etc.). The second column is an NSPopUpButtonCell
which is supposed to allow the user to pick a handler for the given document type (think of Xcode’s “File Types” preference pane, and you’re pretty much there).
I can generate an NSMenu
for a given item in the tree, populated with options based upon the Launch Services database entries for the UTI, complete with the relevant application icon and and so on. In fact, the menu itself works wonderfully, populated by way of NSPopUpButtonCellWillPopUpNotification
.
The problem is, try as I might, the cell when the menu isn’t popped up always contains precisely one of two things: either an empty string, or the default text for the cell, the former if the result of -handlerName
on the item (the attribute assigned to the column) is non-nil
, the latter otherwise.
Moreover, I’m manually calling -selectItem:
on the NSPopUpButtonCell
instance, which just seems Wrong. In contrast, the left-hand column, which is just an NSTextFieldCell
, everything just works (although granted, all it’s got to do is read the value from the item and present it).
(Disclaimer: I’m fairly new at Cocoa UI stuff; I know Objective-C, and lots of other programming languages, but I’ve not a huge amount of experience of building Mac OS X UIs, so be gentle).
© Stack Overflow or respective owner