Эквивалент .Net UserControl XCode - PullRequest
       21

Эквивалент .Net UserControl XCode

3 голосов
/ 08 октября 2011

Я привык создавать "пользовательские элементы управления" в Visual Studio ... и мне было интересно, есть ли способ сделать это в XCode ...

Я искал и некоторыелюди говорили мне создать плагин ... это звучит слишком сложно, чтобы создать простое многократно используемое текстовое поле "кнопка -> кнопка -> метка" ... В VS я могу просто создать -> Пользовательский элемент управления, программировать и перетаскиватьуправление, как если бы это была простая кнопка ... и это действительно так просто ...

Есть идеи?

1 Ответ

5 голосов
/ 09 октября 2011

XIB (представление построителя интерфейса) или класс, наследуемый от UIView, эквивалентны пользовательскому элементу управления. Это способы агрегирования вложенных представлений (представлений и подчиненных представлений, а не элементов управления).

Внутри XIB в конструкторе интерфейсов вы можете добавить другие элементы управления (перетащить из библиотеки) и поместить в представление. Файл, Новый файл, под iOS, Пользовательский интерфейс, Просмотр. Этот ТАК вопрос охватывает это:

Как связать файл пера (.xib) с UIView?

Если вы хотите сделать это программно, создайте новый класс target-c, который наследуется от UIView. В viewDidLoad вы можете программно создавать другие элементы управления и размещать их.

Вот программный учебник:

http://www.raywenderlich.com/1768/how-to-make-a-custom-uiview-a-5-star-rating-view

Наконец, общий тип «агрегатного управления» - это UITableViewCell для использования в таблицах. Вот учебник по созданию пользовательских ячеек UITableView как программно, так и с IB.

http://www.e -string.com / содержание / заказные-UITableViewCells-интерфейс-строитель

Эти руководства от Apple хорошо читать:

http://developer.apple.com/library/ios/#DOCUMENTATION/WindowsViews/Conceptual/ViewPG_iPhoneOS/Introduction/Introduction.html

http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/BasicViewControllers/BasicViewControllers.html

EDIT:

Я только что попробовал это ...

Добавьте XIB в ваш проект, как описано выше. Добавьте к нему несколько элементов управления, которые вы хотите объединить в виде многоразового использования.

Теперь - в одном из ваших других контроллеров View / view перетащите UIView, чтобы запросить пространство, где будет использоваться ваш агрегатный элемент управления.

Создайте IBOutlet UIView * _customView и, по вашему мнению, привяжите этот выход к тому UIview, который вы только что вытащили. На данный момент это всего лишь контейнер, и у вас есть iVar / IBOutlet, так что вы можете добавлять в него вещи.

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

Используйте класс UINib, чтобы исключить ваш пользовательский контроль Xib. Вот код, который я вставил в viewDidLoad:

UINib *nib = [UINib nibWithNibName:@"TestView" bundle:nil];
[_customView addSubview:[[nib instantiateWithOwner:self options:nil] objectAtIndex:0]];

Не просто перетаскивание, а понимание того, что UINib кэширует макеты, чтобы вы могли быстро вырезать новые экземпляры и добавлять их в свою форму в любом месте, используя возможности управления макетом IB с помощью UIview.

...