Подкласс UITableViewCell не инициализируется при использовании loadNibNamed

#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.