#cocoa-touch #ios #uitableview #initialization #subclass
#cocoa-touch #iOS #uitableview #инициализация #подкласс
Вопрос:
У меня есть класс, который подкласс UITableViewCell. Мне нужно инициализировать некоторые значения в ячейке при ее создании, и я создаю ее с помощью:
NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil];
Я получаю следующий метод при создании подкласса через интерфейс XCode «Добавить новый файл»:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]))
{
self.selectionStyle = UITableViewCellSelectionStyleBlue;
[txtField setEnabled:YES];
[txtField setTextColor:[UIColor redColor]];
[txtField setPlaceholder:@"Fake Placeholder - Test Initialize"];
[contactBtn setEnabled:YES];
}
return self;
}
Код в этом методе никогда не выполняется. Как я могу это сделать? Если это не тот метод, который используется при создании экземпляра объекта (с использованием NSBundle loadNibNamed), тогда что это? Как я могу инициализировать ячейку при создании ее из nib таким образом?
Любая помощь приветствуется.
Ответ №1:
При загрузке из nib представления инициализируются вызовом initWithCoder:
, а не одним из ваших обычных методов инициализации. Вы могли бы переопределить этот метод для выполнения вашей инициализации или вы могли бы реализовать awakeFromNib
.
Ответ №2:
Загрузка nib-файла не создает никаких объектов, поскольку они уже созданы, а затем сериализованы в файле nib.
Попробуйте метод awakeFromNib, который отправляется всем объектам в файле nib.