Как привязать значение UILabel к переменной экземпляра?

Я полный новичок в mac / objective-c. Мой вопрос: мне интересно, можно ли привязать текст UILabel к переменной, при этом не нужно вручную устанавливать текст при изменении значения.

Например, в Mac OS, когда я открываю новое окно Finder и удаляю файл, глобальное свободное пространство на панели задач меняется. И это значение также изменяется во всех открытых «искателях».

Как я могу воспроизвести такое поведение с помощью Objective-c на Mac или iPhone? Я думал об UILabel, но не мог найти другого способа, кроме ручной установки каждого UILabel.

спасибо Леонардо


person Leonardo    schedule 19.01.2010    source источник


Ответы (3)


Текущая версия iPhone OS (3.1) не поддерживает привязки (например, в настольной версии Cocoa). На данный момент вам нужно будет написать клей для контроллера вручную, чтобы пользовательский интерфейс синхронизировался с вашей моделью.

В частности, вы должны добавить метод IBAction в свой контроллер и подключить UILabel для его вызова при изменении содержимого.

Этот вопрос уже рассматривался ранее:

На Mac вы должны использовать кодирование ключевого значения (KVC) и привязать метку к объектному контроллеру в IB. Документация по привязкам довольно подробно освещает это:

person gavinb    schedule 19.01.2010

Вам нужно будет изучить следующее:

  1. Уведомления Уведомления

и / или

  1. Кодирование ключевого значения KVC

Уведомления позволят вам настроить автоматические уведомления об изменениях, скажем, для объекта (например, переменной), изменения которого вы хотите каскадировать по всей программе. KVC позволяет связывать данные с объектами и может быть полезен, если вы используете Core Data.

Сначала я бы начал с уведомлений.

person Jordan    schedule 19.01.2010

Это очень возможно и есть 2 способа сделать это.

Программно, сделав UILabel в коде и просто установив myLabel.text.text его

Хотя в Interface Builder вы перетаскиваете UILabel туда, куда хотите, и у вас есть свойство в коде, чтобы подключить его, а затем использовать это свойство, чтобы установить на нем myLabel.text.

person James    schedule 19.01.2010