Как сделать IBOutlets в MonoTouch? - PullRequest
4 голосов
/ 17 февраля 2010

Я сделал одно приложение для iPhone в Objective-C. Когда я хочу связать метку с некоторыми данными, я бы объявил ее так:

@interface CityDetailViewController : UIViewController {
UILabel *cityName;
}

@property(nonatomic, retain) IBOutlet UILabel *cityName;

И затем, когда объект CityDetailViewController создается в коде, я бы назначил название города следующим образом [self.cityView.cityName setText:city.name];

Не могу, по жизни, понять, как это сделать в MonoTouch. Я попытался вручную создать розетки через Interface Builder и попытался добавить этот код, который я нашел в файле .designer.cs из другого проекта:

[MonoTouch.Foundation.Connect("headlineLabel")]
    private MonoTouch.UIKit.UILabel headlineLabel {
        get {
            return ((MonoTouch.UIKit.UILabel)(this.GetNativeField("headlineLabel")));
        }
        set {
            this.SetNativeField("headlineLabel", value);
        }
    }

И я попробовал комбинацию обеих этих вещей. Они не работают Самое близкое, что я могу получить - это на самом деле применить Outlet с помощью Interface Builder, но когда мой View объявлен, я получаю эту ошибку:

этот класс не совместим с кодировкой значения ключа для headlineLabel.

Так что я в полном недоумении. Может кто-нибудь объяснить это мне, пожалуйста?

1 Ответ

17 голосов
/ 17 февраля 2010

Уверен, что я понял это, поэтому я опубликую процесс здесь, чтобы другие могли посмотреть:

Шаг 1) Начните с вашего пустого просмотра Вот так: step 1
(источник: jamespwright.com )

Шаг 2) Добавьте элемент управления UILabel к вашему представлению: step 2
(источник: jamespwright.com )

Шаг 3) Выберите «Владелец файла»: step 3
(источник: jamespwright.com )

Шаг 4) Выберите инспектора идентификации (CMD + 4) и добавьте новый выход класса: step 4
(источник: jamespwright.com )

Шаг 5) Выберите инспектора подключений (CMD + 2), и вы увидите там свой новый выход класса: step 5
(источник: jamespwright.com )

Шаг 6) Перетащите соединение с вашей меткой на вашем View.

Шаг 7) Внутри кода вы заполняете его, набирая myLabel.Text = "My Label!"

Надеюсь, это поможет кому-то еще в будущем.

...