Как я могу писать привязки какао в виде кода, а не в Интерфейсном Разработчике?

В моей модели я получил NSMutableArray, который отслеживает изменение количества элементов. На мой взгляд, у меня есть NSTextField, который показывает количество элементов.
Представление извлекается из файла пера и выделяет / инициализирует модель. Следовательно, он знает о модели и содержащемся в ней массиве.

Установил соединение следующим образом. В Интерфейсном разработчике в текстовое поле я добавил «путь» Какао-привязки, например: myModell.myArray.@count. Благодаря этому я могу получить доступ к свойству count (которое является обязательным, поскольку сам массив не изменяется).
Привязка основана на соответствии ключ-значение, которое я установил в модели, поэтому можно получить доступ к массиву. Но соответствие "ключ-значение" не является частью вопросов.

Мой вопрос: как я могу поместить привязку в исходный код, а не записывать ее в Interface Builder?




Ответы (1)


С помощью протокола NSKeyValueBindingCreation. Вы отправляете что-то вроде [someObject bind:@"value" toObject:myModel withKeyPath:@"myArray.@count" options:nil].

person Chuck    schedule 02.06.2010
comment
Я уже пробовал это. На что бы вы сослались someObject и value, если бы я хотел обновить myTextField? Я протестировал следующее: [самостоятельная привязка: @myTextField ...] [самостоятельная привязка: @ myTextField. @ Значение ...] [привязка myTextField: @value ...] Однако ничего из вышеперечисленного не сработало. - person JJD; 03.06.2010
comment
Нееееет, это, очевидно, зависит от того, куда вы собираетесь поместить код, но если предположить, что он куда-то идет с действительной ссылкой на myTextField и myModel, аргумент для привязки: это имя привязки. Итак, как сказал Чак .. [myTextField bind: @value toObject: myModel withKeyPath: @ myArray. @ Count options: nil] - person hooleyhoop; 03.06.2010
comment
да. Теперь я понимаю. [привязка self.myTextField: @stringValue toObject: self.myModell withKeyPath: @ myArray. @ count options: nil]; Важно отметить, что текстовое поле в IB также должно иметь некоторую связь с переменной-членом myTextField. (objectValue вместо stringValue тоже работает) - Спасибо, ребята! - person JJD; 03.06.2010