Базовые привязки какао: переключить логическое значение из меню в IB

Я только начинаю работать с Cocoa Bindings, и хотя я прочитал большую часть документации, я все еще пытаюсь реализовать базовую функцию, что заставляет меня сомневаться, что я делаю это неправильно или, возможно, это просто невозможно через IB .

Цель: иметь пункт меню «Переключить видимость» для переключения состояния логического свойства в моем контроллере приложения (AppController), называемого «видимость». Я думаю, что это должно быть возможно полностью через IB.

(Примечание: CoreData здесь не используется)

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

Следует ли выбирать ключ контроллера? Должен ли путь ключа модели быть именем моего логического свойства? Каким должно быть имя селектора?

Или мне нужно настроить отдельный метод действия под названием «toggleVisibility», к которому я могу привязаться? Если бы я это сделал, почему бы мне просто не использовать стандартные ассоциации цель / действие, а не привязки?

Любой ввод / направление приветствуется.


person wadesworld    schedule 10.01.2010    source источник


Ответы (1)


Цель: иметь пункт меню «Переключить видимость» для переключения состояния логического свойства в моем контроллере приложения (AppController), называемого «видимость».

Ваша цель говорит вам, почему вы терпите неудачу.

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

Более того, реализация пункта меню глагола с привязками по своей сути затруднена, потому что привязки - неподходящий инструмент для работы. Привязки предназначены для отображения свойств в вашем пользовательском интерфейсе. Это не для выполнения команд.

Правильный заголовок поддерживается правильным решением на основе привязок.

Правильный заголовок пункта меню - просто «Видимый».

Уже одно это должно дать вам подсказку, как действовать дальше. Вот еще одно: когда выбор виден, у пункта меню должна быть галочка; когда он не виден, пункт меню не должен иметь отметки.

Вы хотите связать свойство пункта меню с логическим свойством вашего контроллера. Обычно это свойство пункта меню будет state, но по какой-то причине его привязка называется value.

Итак, привяжите value привязку пункта меню к логическому свойству вашего контроллера.

person Peter Hosey    schedule 10.01.2010
comment
Оцените комментарии - на самом деле это не были названия предметов - я просто пытался использовать общие имена, чтобы не запутать проблему. Видимо я потерпел неудачу. :) - person wadesworld; 11.01.2010
comment
Хорошо, так что игнорируйте мою критику вашего выбора названия пункта меню. Решение остается тем же: привяжите value пункта меню к логическому свойству вашего контроллера. - person Peter Hosey; 11.01.2010