2012-01-04 6 views
2

View-based NSTableView с одним столбцом. Каждая «ячейка» содержит несколько NSTextFields, NSImageView и NSButton, все из которых связаны с различными атрибутами objectValue представления Cell Cell View. Содержимое NSTableView привязано к упорядоченным объектам NSArrayController, который находится в режиме Entity и привязан к соответствующему NSManagedObjectContext.привязка аргумента NSButton в NSTableView на основе представления

NSTextFields и NSImageView ведут себя так, как ожидалось. Однако по какой-то причине NSButton этого не делает. Он всегда отключен. Я связал свой аргумент с свойством objectValue и его целью с владельцем файла. Эксперимент показывает, что причиной является проблема привязки аргумента, а не привязка к цели. Впечатление заключается в том, что значение аргумента должно быть равно nil, поэтому включение кнопки будет отключено. И все же этого не может быть, потому что другие привязки (NSTextFields и т. Д.) Работают нормально.

Я использовал аргументы кнопок/целевые привязки много раз в табличных таблицах без проблем. Поэтому я подумал, что, возможно, была какая-то характеристика табличных представлений на основе представления, что означает, что такие привязки не работают. Но образец TableViewPlayground в Apple использует этот подход (на панели HUD) без проблем. Мои привязки настраиваются точно так же. Единственное различие, которое я вижу, в том, что в примере Apple используется контроллер массива класса, тогда как мой - сущностный режим. Но я не могу поверить, что это проблема (или, по крайней мере, я очень надеюсь, что это не так, как если бы это была серьезная слабость).,

ответ

7

Я потратил несколько часов на эту же проблему. В моем случае делегат NSTableView также не был настроен на владельца файла. Установив это, все начало функционировать должным образом.

+0

К сожалению, это не имеет никакого значения в моем случае. – jfewtr

+1

Этот ответ сработал для меня, спасибо. Для jfewtr: убедитесь, что вы учитываете селектор (вам понадобится такой метод, как '- (void) buttonAction: (id) sender;' для его работы. Кроме того, вы можете попытаться добавить ':' после селектора в IB –

+3

Подтверждено - если делегат tableView равен нулю, действия с кнопками не будут отправляться. –