Я собираюсь предположить, что вы делаете это в NSTableView на основе ячеек, потому что NSButtonCell предоставляет привязку title
, но это бесполезно в контексте NSTableView, потому что вы должны связать NSTableColumn, и , что предоставляет только привязку значения для NSTableColumns, содержащую NSButtonCells. Это недостаток фреймворка, и Google показывает, что с этим столкнулись многие.
Один из подходов к этому - обновить заголовок модели в ваших методах делегатов -tableView:dataCellForTableColumn:row:
и -tableView:willDisplayCell:forTableColumn:row:
. Недостатком этого является отсутствие обновления через KVO при изменении базовой модели. Если это важно для вашего приложения, один из обходных путей - сделать keyPath модели для value
флажка зависимым от keyPath модели для title
флажка. Таким образом, при изменении заголовка KVO будет отправлять уведомления об изменении значения, что приведет к перерисовке строки, и, следовательно, заголовок будет обновлен методом делегата.
Я заметил, что этот вопрос старый, но в наши дни более простым подходом было бы использовать NSTableView на основе NSView. После этого вы работаете с первоклассным элементом управления NSButton с доступными привязками Value и Title (и кучей других). Часто это более работоспособный подход, при условии, что вы не беспокоитесь о поддержке версии ОС до Lion.