我将假设您在基于单元格的 NSTableView 中执行此操作,因为 NSButtonCell 确实公开了一个title
绑定,但在 NSTableView 的上下文中它是无用的,因为您必须绑定 NSTableColumn,而这只公开了一个值绑定包含 NSButtonCells 的 NSTableColumns。这是框架的一个缺点,谷歌透露许多人都在努力解决这个问题。
一种方法是在您的-tableView:dataCellForTableColumn:row:
和-tableView:willDisplayCell:forTableColumn:row:
委托方法中更新模型的标题。这样做的缺点是当底层模型发生变化时不会通过 KVO 进行更新。如果这对您的应用程序很重要,一种解决方法是使value
复选框的模型 keyPath 依赖于复选框的模型 keyPath title
。这样,当标题更改时,KVO 会发送值更改通知,这将导致重新绘制行,从而通过委托方法更新标题。
我注意到这个问题很老了,但现在更简单的方法是使用基于 NSView 的 NSTableViews。以这种方式完成后,您将使用一流的 NSButton 控件,同时提供 Value 和 Title 绑定(以及许多其他绑定)。假设您不担心支持 Lion 之前的操作系统版本,这通常是一种更可行的方法。