Текущие настройкиПоказ содержимого UIView загруженного из XIb в раскадровке
У меня есть подкласс UIView
который загружает содержимое из файла XIb - назвать это XibOwnerClass
. Кроме того, среди других классов есть класс, называемый Triangle
, который помогает мне создавать треугольники с рамкой или без нее с разными цветами штриха или заливки и т. Д. Этот класс можно разделить на раскадровку, а некоторые его свойства определены как IBInspectable
.
В настоящее время в моем файле xib
я использую этот вид треугольника и настраиваю его проверяемые свойства через IB
. И это действительно здорово и удобно ... Поэтому, если я посмотрю на xib
, я действительно увижу треугольный вид среди других видов.
Итак, давайте идем дальше. Чтобы использовать этот XibOwnerClass
, я перетаскиваю элемент UIView
в раскадровку и меняю свой пользовательский класс на XibOwnerClass
, поэтому я получаю свои свойства, которые можно задавать для XibOwnerClass
. Итак, я могу настроить все в IB
, и когда я запускаю приложение, все работает.
Проблема
Даже если это работает, мне интересно, если есть способ, чтобы иметь несколько представлений (класс XibOwnerClass
) затянулась на раскадровке, и быть в состоянии настроить все из них в отдельности корыта Интерфейс Builder?
В настоящее время, когда я перетаскиваю UIView
и меняю свой пользовательский класс на XibOwnerClass
Я ничего не вижу. Я имею в виду, что вид есть, и он имеет свои стандартные свойства + проверяемые свойства. Но я не вижу треугольников, определенных в xib
в этом новом представлении. Есть ли способ сделать это?
Я знаю, что xib
повторно используется в моем случае (и он должен использоваться таким образом), поэтому, если я что-то изменил в xib
, все изображения, загруженные из него, будут затронуты. Но есть ли способ множественного просмотра загрузить с того же xib
, но когда загружен, чтобы увидеть их & настроить их индивидуально?
Вот как я загружаю из xib
:
-(instancetype)initWithCoder:(NSCoder *)aDecoder{
if ((self = [super initWithCoder:aDecoder])){
UIView *myView = [[[NSBundle mainBundle] loadNibNamed:@"MyXib" owner:self options:nil] firstObject];
if (myView){
myView.frame = CGRectMake(myView.frame.origin.x, myView.frame.origin.y, self.frame.size.width, self.frame.size.height);
[self addSubview:myView];
//Initialize other stuff
[self commonInit];
}
}
return self;
}
Тогда в awakeFromNib:
я использую значение осматриваемых свойств ...
EDIT:
Также я не initWithFrame:
реализованы , но я думал, что это не нужно, если загрузка из nib (потому что она не выполняется). Но, возможно, это необходимо во время разработки?
Я обновлю свой вопрос с помощью некоторого кода. Кроме того, этот метод никогда не выполняется в моем случае (я поставил точку останова). И обратите внимание, что я вижу проверяемые свойства в IB для моего XibOwnerClass. Я просто не вижу никакого контента от фактического xib. – Whirlwind
А, этот метод называется только во время разработки, а не во время сборки. В любом случае, я не вижу различий. В настоящее время я ничего не вижу. Это похоже на то, что я добавил обычный просмотр + проверяемые свойства (в Attributes Inspector). Контент не отображается. – Whirlwind
Теперь это сработало, я тоже ответил. Спасибо за ваш ответ. Вы получили мой взнос, потому что это, конечно, недостающая часть для решения моей проблемы. – Whirlwind