Прохладный вопрос. Я собираюсь сделать снимок в темноте, я не могу подтвердить его для вас до завтра, но попробуйте это, может быть?
Создайте новый объект, enabledOrEnabled2
(возможно, с лучшим именем).
Override сорбент (-(BOOL)enabledOrEnabled2
) для этого свойства
просто вернуться (Enabled || Enabled2)
Установите ключ Путь быть enabledOrEnabled2
Я немного скептически, если это будет работать, потому что какао привязок работу с помощью KVC и КВО. Поэтому atm, ваш контроллер просмотра наблюдает ваши Enabled
и Enabled2
. Что происходит во время выполнения, так это то, что Cocoa переопределит ваши свойства с собственными свойствами KVO, которые выглядят и действуют так же, как вы думаете. За исключением того, что сеттеры были отменены, для отправки уведомлений наблюдателям.
Я думаю, что проблема с моим решением заключается в том, что -(void)setEnabledOrEnabled2
никогда не будет вызван, потому что вы будете устанавливать только свои и Enabled2
. Поэтому какао переопределены -(void)setEnabledOrEnabled2
никогда не уведомит ваши наблюдения View Controller
EDIT: Просто прочитайте @ комментарий stevesilva, и даже не знал, что dependent keys была вещь. Похоже, вы могли бы определенно реализовать это таким образом, если вы хотите
На самом деле, первый размышлению хак будет переключаться на переопределение поглотитель (как я первый рекомендуется), и вместо того, чтобы переопределить сеттеры: -(void)setEnabled
и -(void)setEnabled2
, и добавьте строку, что-то вроде: _enabledOrEnabled2 = _Enabled || _Enabled2
. Таким образом, когда вы установили два свойства BOOL, он обновит enabledOrEnabled2
, после чего отправит уведомление своему наблюдателю, вашему контроллеру.
Но теперь, когда я это написал, мне было интересно узнать о второй части Cocoa Bindings, KVC, чтобы модифицировать модель всякий раз, когда вид видит изменения.
И поскольку вы на самом деле используете привязки в состоянии Enabled
- я действительно не думаю, что вы должны использовать Bindings. Это связано с тем, что представление фактически не может быть изменено (т. Е. Вы не можете изменить состояние кнопки enabled
). Таким образом, вам никогда не понадобится использовать KVC для изменения enabledOrEnabled2
, вам нужна только ваша кнопка, чтобы наблюдать за BOOLs, чтобы узнать, нужно ли ее включить или нет.
Так лом все, что я сказал thusfar--
Что вы должны сделать еще модифицировать сеттер (-(void)setEnabled
и -(void)setEnabled2
), и перед установкой Ивара следует добавить строку:
[self.button setEnabled:(_Enabled || _Enabled2)];
Это должны сделать трюк для йа :)
Извините за бессвязный немного, я чувствую, что информация, которую я написал вначале может быть полезным, поэтому я решил не удалять его
Я не думаю, что Boole позволяет нам использовать NSNegateBoolean value transformer, чтобы получить то, что вам нужно, потому что AND запекается в привязках NSButton. Таким образом, вам может потребоваться создать свойство readonly с зависимыми ключевыми путями, которые возвращают OR, и связываться с этим. – stevesliva