Зачем вам связывать значение NSProgressIndicator?

Какой смысл связывать значение NSProgressIndicator с вашим контроллером? Кажется, он никогда не запрашивает значение у контроллера, кроме как при запуске. Кажется, что единственный способ переместить NSProgressIndicator - отправить его #increaseBy:, который обходит мою привязку. Итак, зачем мне связывать?!

1 ответ

Решение

Если значение привязки вашего пользовательского интерфейса не обновляется, это означает, что вы либо испортили привязку, либо код вашего контроллера не изменяет значение привязки способом, соответствующим наблюдениям значения ключа. Наиболее распространенная проблема заключается в fooIvar = val скорее, чем [self setFooIvar:val] или же self.fooIvar = val,

Ответ Apple на вашу проблему:

[Что делать, если] Изменение значения свойства модели программно не отражается в пользовательском интерфейсе

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

  • В классе модели включено автоматическое наблюдение значения ключа или реализовано ручное наблюдение значения ключа для свойства.
  • То, что вы изменяете значение, используя метод доступа или метод, соответствующий кодированию значения ключа. Непосредственное изменение значения переменной экземпляра не предоставляет уведомлений об изменениях наблюдения значения ключа.
  • Если ваше свойство модели является коллекцией, то вы изменяете содержимое в соответствии с наблюдением значения ключа. См." Мой контроллер коллекции не отображает текущие данные " для получения дополнительной информации.

Ответ на этот вопрос и ответы на другие распространенные проблемы см. В разделе "Устранение проблем с привязками какао".

Вам также следует взглянуть на примеры, предоставленные mmalc. Они являются ценным ресурсом.

Другие вопросы по тегам