(TL;DR more or less in bold below)...
Thank you again.
I do have a CPPopupButton now showing in the appropriate table cell (although it seems to change the style of the adjacent CPTextView cells by its presence, but I can live with that).
What I cannot fathom, despite trying for ages, is how I get it to work with bindings (and the rest of the bindings in my table).
Previously what is now the CPPopupButton drop down cell was just a CPTextView 'cell' and all the columns in this table are bound to the various properties of a CPArrayController handling the objects to display.
That was all good.
Now, given that the drop down list in the cell is only a convenience for the user to select between three fixed choices that occur in the model property as specific strings (Subscriber, Publisher, Admin), I'm trying to get the CPPopupButton to (naturally) show the item whose display text matches the string in the model property (called "role"), and then set that same string in the model property when the user selects another item from the menu. In this case, I do not need to actually populate the menu with items programmatically, as these are just the fixed 3 values; I have just created this fixed menu in Xcode/IB.
By my way of thinking I just need that model property to drive the selection of the menu item by a match on its display name and then push back the string of the menu item to the property when it changes. That seems nice and symmetrical and something a single binding would cope with... but which binding(s)?
My first thought was to leave the table column bound to the arrangedObjects.role (string), and then bind the CPPopupButton's selectedValue to the very same (the array controller's arrangedObjects.role, being a string). At least I read that selectedValue has to do with selection based on the displayed string of the menu item, which seems to be what I want.
I've tried various other configurations, but haven't landed upon the magic incantation. Unfortunately, using bindings is very concise and powerful (and I love it!), but tends to be more opaque and difficult to reason about if you haven't landed on the 'correct' configuration.
It seems to me that this ought to be simple (famous last words!), so I'm pretty sure I'm just not quite finding the right configuration. But, there's always the possibility that Cappuccino does something differently or there's a bug etc. so if you have any ideas I would be most grateful.