Как наследовать пользовательский вид с файлом .xib

Существует настраиваемое представление, состоящее из класса и файла xib. я использую его как

[[NSBundle mainBundle] loadNibNamed:@"myViewNib" owner:self options:nil];

Вопрос в том, как наследовать это пользовательское представление.

Я наследую myViewClass, но тогда я не могу использовать приведенный выше код для создания экземпляра. Думаю, я ошибаюсь.


person leavez    schedule 30.10.2013    source источник


Ответы (2)


Один из вариантов — не создавать сам MYBaseView в файле .xib, а его подвид. Таким образом, вы сможете легко унаследовать MYBaseView.

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

- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    if (self) {
        [self setUp];
    }
    return self;
}

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self setUp];
    }
    return self;
}

- (void)setUp
{
    UIView *view = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil] lastObject];
    [self addSubview:view];
}
person dariaa    schedule 30.10.2013
comment
Если таким образом, могу ли я связать представление в .xib с MYBaseView? - person leavez; 31.10.2013
comment
Нет, представление в .xib просто UIView, вместо этого вы должны связать владельца файла с MYBaseView. - person dariaa; 31.10.2013
comment
Прохладно. Я повторил подвиды пера и добавил их все как подвиды. - person funct7; 23.05.2017

Должен быть:

myViewClass *newView = [[NSBundle mainBundle] loadNibNamed:@"myViewNib" owner:self options:nil];
person Avi Tsadok    schedule 30.10.2013
comment
Это массив, а не представление. добавить lassObject или objectAtIndex:0 - person LE SANG; 30.10.2013