Я создаю свой собственный UITableViewCell для использования в качестве бэкэнд прототипа. В моем классе я переопределяю метод initwithstyle:reuseIdentifier: для выполнения некоторой пользовательской инициализации, но мой инициализатор не вызывается. У меня есть точка останова на первой строке внутри нее, а также точка останова на dequeueResusableCellWithIdentifier:. Вызывается метод dequeueResusableCellWithIdentifier:, и он возвращает инициализированную ячейку, но точка останова в initwithstyle:reuseIdentifier: не достигается. Любая помощь будет отличной.
Initwithstyle: reuseIdentifier: не вызывается
Ответ 1
Если ваша ячейка создается из прототипа раскадровки (который вы объявили как пользовательский класс в IB), то она не будет создана с помощью initWithStyle..., а initWithCoder: вместо этого, как и любой другой объект, загруженный из ниба, Если у вас есть какой-либо установочный код, он должен быть там или в awakeFromNib.
Ответ 2
При использовании раскадровки все меняется. Это метод, который вызывается.
-(id)initWithCoder:(NSCoder *)aDecoder {
if ( !(self = [super initWithCoder:aDecoder]) ) return nil;
// Your code goes here!
return self;
}
Ответ 3
Если вы используете StoryBoarsd, тогда UITableViewContoller не будет вызывать initWithStyle вместо initWithCoder, он будет работать сейчас