Как MonoTouch автоматически генерирует код XIB? - PullRequest
2 голосов
/ 26 мая 2010

Я программист на C #, немного увлекаюсь разработкой для iPhone с использованием MonoTouch.

Я добавляю новое определение интерфейса в свой проект и дважды щелкаю, чтобы открыть его в Интерфейсном Разработчике. Я добавляю UIButton. Я сохраняю файл и проверяю файл xib.designer.cs, и не вижу ссылки на новую кнопку.

Я скачал код с http://monotouchexamples.com/, где я мог видеть пример автоматически сгенерированного кода:

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

Я открыл MainWindow.xib в конструкторе интерфейсов. Я заметил несколько отличий. Владелец файла имеет тип UIApplication вместо NSObject. Какова важность этого? Существует объект App Delegate типа AppDelegate. Я не могу добавить AppDelegate в свое собственное представление или, по крайней мере, не могу найти его в библиотеке. Нужно ли добавить один? Я вижу, что существующие элементы управления в MainWindow.xib имеют ссылки на выходы для делегата приложения. Я добавляю новую кнопку и хочу подключить ее. Когда я щелкаю и перетаскиваю новый источник ссылок в приложение «Делегировать», появляется контекстное меню со списком существующих элементов управления. Как добавить новый элемент в этот список, или откуда этот список?

Я был избалован миром Visual Studio, где я просто помещаю кнопку в форму и начинаю писать код для события click. Может ли кто-нибудь дать несколько советов о шагах, необходимых для того, чтобы это работало на MonoTouch?

Спасибо

Patrick

Ответы [ 3 ]

1 голос
/ 23 июля 2010

Как говорит Дейв, вам нужно добавить розетку в ваш класс контроллера и подключить кнопку к этой розетке, прежде чем появится какой-либо автоматически сгенерированный код. Это поначалу застало меня врасплох.

Вы выбираете свой класс контроллера в окне библиотеки Interface Builder, выбираете «розетки» в нижней части библиотеки и добавляете розетку там. Затем вам нужно выбрать кнопку, выбрать вкладку соединений в окне инспектора и перетащить из круга «Новый источник ссылок» в класс контроллера. Interface Builder предложит вам выбрать розетку для подключения. Затем при сохранении вы должны автоматически сгенерировать код, который появится в файле .xib.designer.cs, и затем вы сможете ссылаться на вашу кнопку через эту переменную в файле .xib.cs.

1 голос
/ 26 мая 2010

Добавление кнопки само по себе недостаточно. Кнопка недоступна за пределами Интерфейсного Разработчика. Вам нужно добавить розетку и соединить кнопку с розеткой в ​​Интерфейсном Разработчике.

Помните: розетки - это члены вашего класса Controller, которые получают ссылку на элементы управления, без них вы не можете просто получить доступ к элементам управления.

0 голосов
/ 04 июня 2010

Похоже, проект, который я создал, устарел - я помню, что было довольно много изменений в том, как сгенерированные кнопки создаются в файле дизайнера. Я скоро обновлю проект для вас.

Как сказал Дейв, для автоматической генерации кода вам нужно добавить выход с помощью Interface Builder. Здесь должен быть пример этого видео - http://bit.ly/aWoItN, но сервер в данный момент не работает.

Надеюсь, это поможет,

ChrisNTR

...