Как создать собственный UIView? - PullRequest
0 голосов
/ 07 августа 2010

Я создал подкласс UIView и соответствующий xib-файл, где я выложил некоторые UILabels и UIImageViews.Я хочу затем поместить несколько копий этого пользовательского UIView в UIViewController.

Когда я это делаю, они отображаются пустыми в конструкторе интерфейса и не появляются при загрузке приложения.Какие методы мне нужно реализовать в подклассе UIView, чтобы эта работа работала?

Ответы [ 3 ]

5 голосов
/ 07 августа 2010

Самый простой способ на сегодняшний день - создать перо с владельцем файла, установленным в NSObject, содержащее одно представление, содержащее элемент макета.

Тогда

NSArray *arr = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:nil options:nil];
UIView *fv = [[arr objectAtIndex:0] retain];

// now you have the view, do something with it:
fv.center = CGPointMake(100,100);
[self.view addSubview:fv];

Не нужно ничего делать с владельцем файла; здесь даже установлен ноль.

2 голосов
/ 07 августа 2010

Это похоже на использование файла пера для создания ячеек табличного представления. Здесь - страница, на которой обсуждается, как это сделать.

Вам нужно будет добавить розетку в свой подкласс UIViewController для пользовательского представления и установить подкласс UIViewController в качестве «Владельца файла» в файле пользовательского представления (.xib). Затем подключите созданную вами розетку к объекту представления верхнего уровня (снова в вашем собственном файле пера представления).

Затем каждый раз, когда вы хотите создать свой собственный вид в коде контроллера представления, звоните:

[[NSBundle mainBundle] loadNibNamed:<custom view nib name> owner:self options:nil];

Затем добавленная вами точка будет указывать на новый экземпляр вашего пользовательского представления.

Единственным недостатком этого подхода является то, что вам придется размещать экземпляры своего пользовательского представления в контроллере представления программно, а не графически в конструкторе интерфейса.

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

0 голосов
/ 07 августа 2010

Редактировать : К сожалению, в Xcode 4.0 эта возможность была удалена.

Как только вы настроили свое подпредставление в Интерфейсном Разработчике, вы можете создать новую группу (используйте кнопку cog навнизу окна библиотеки) и перетащите ваш объект подкласса (содержащий ваши изображения и метки) из представления списка (то есть, не представления макета) обратно в окно библиотеки.

Затем вы можете графически добавить несколько экземпляров своего подкласса представления в любое представление или окно построителя интерфейса, как если бы вы использовали встроенные объекты в библиотеке.

...