Инициализация представления с помощью специального 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 - объект уже был бы инициализирован этим пунктом, чтобы вы не могли его повторно вызвать.
Самое простое решение - выставить свои пользовательские параметры в качестве свойств и просто установить их после создания представления.