2015-01-11 7 views
-1

im osx-dev noob, который пытается создать приложение с тремя табличными представлениями, которое покажет содержимое основного объекта хранилища данных. Но каждый вид таблицы фильтруется по атрибуту «статус» объекта.Проблема связывания какао с тремя табличными окнами

проблема возникает, когда я также хочу показать выбранный объект в текстовых полях. Я использую три разных контроллера массива с различными предикатами выборки. Но в текстовом поле я могу привязать значение только к одному контроллеру массива.

Должен ли я перехватывать привязки и делать все это программно или есть простое решение? :)

вот скриншот, чтобы вы могли понять мое описание приложения. enter image description here

+0

Вы хотите, чтобы текстовые поля ниже отображали самый последний выбор из трех таблиц выше? Выбранные три таблицы не синхронизированы? В каждой из них может быть выбран другой объект? – stevesliva

ответ

0

Держите привязки, чтобы заполнить текстовые поля, если он удовлетворяет тому, что вы хотите сделать с этим графическим интерфейсом. Я бы добавил NSObjectController для управления одной сущностью, которую представляют эти поля. Если вы хотите, чтобы изменения пользователя в этих полях сохранялись, привязки по-прежнему являются удивительными.

Но я думаю, что с тремя таблицами, которые могут контролировать то, что отображается в текстовых полях, вам понадобится какой-то необязательный клей-код, который определяет, какая из таблиц выигрывает. Вы, вероятно, можете делать все, что хотите, внедряя часть протокола NSTableViewDelegate.

Если текстовые поля должны отображать последний объект, который пользователь нажал в любой из таблиц, просто попросите каждую таблицу вызвать ту же функцию делегата tableViewSelectionDidChange. Все три таблицы могут иметь один и тот же делегат. Затем вы можете позвонить setContent на NSObjectController с этой функцией.

Вы также можете использовать аналогичный код клея, чтобы предотвратить более одного выбора в любой из трех таблиц, используя одну и ту же функцию делегата, чтобы отменить выбор всех других таблиц либо через представление, либо через контроллер. Но это зависит от вас и требует рассмотрения того, хотите ли вы иметь множественный выбор и т. Д.