Инициализация представления с помощью специального initWithCoder

Чтобы инициализировать представление с xib, я использую функцию initWithCoder. Но что, если мне нужно инициализировать xib с помощью настраиваемого параметра.

Мне нужно что-то вроде этого:

- (id)initWithCoder:(NSCoder *)aDecoder
           andTitle:(NSString *)titleString
{
    self = [super initWithCoder:aDecoder];
    if (self) {
        self.titleLabel = titleString;
    }
    return self;
}

И когда я его назову? После awakeFromNib?

Ответ 1

Вы не можете изменить метод initWithCoder:, так как метод определен в протоколе, который вы не контролируете. Вместо этого вам нужно либо вызвать метод setTitle: после создания объекта, возможно, в awakeFromNib, либо из управляющего контроллера.

Ответ 2

Вы не вызываете initWithCoder самостоятельно, как правило, поэтому вы не можете передавать ему пользовательские параметры. Этот метод будет вызван механизмом загрузки nib, и вы не сможете его контролировать.

Вы, конечно, не назвали бы это awakeFromNib - объект уже был бы инициализирован этим пунктом, чтобы вы не могли его повторно вызвать.

Самое простое решение - выставить свои пользовательские параметры в качестве свойств и просто установить их после создания представления.