Подтвердить что ты не робот

При регистрации UITableViewCell для повторного использования, какой метод init в этой ячейке вызван?

Я пытаюсь использовать собственный подкласс UITableViewCell со стилем, установленным в UITableViewCellStyleSubtitle, и использовать его с registerClass:forCellReuseIdentifier:. Однако я не уверен, как это сделать.

Мое мышление состояло в том, чтобы переопределить метод init и вызвать

self = [super initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:myReuseIdentifier];

внутри него. Тем не менее, я не могу понять, какой метод init вызывается (или если это даже правильный способ сделать это.)

Я попытался перехватить все следующие методы init, но ни один из них не кажется правильным при удалении ячейки:

  • init
  • initWithCoder
  • initWithFrame

Я подтвердил, что dequeueReusableCellWithIdentifier:forIndexPath: возвращает ячейку правильного типа, поэтому я знаю, что он создается. Я просто не знаю, какой метод init вызывается, поэтому я не могу установить стиль по умолчанию.

4b9b3361

Ответ 1

Я считаю, что он вызывает initWithStyle: reuseIdentifier: для инициализации ячейки таблицы.

Из документов Apple

dequeueReusableCellWithIdentifier:

Если вы зарегистрировали класс для указанного идентификатора и создать новую ячейку, этот метод инициализирует ячейку, вызывая ее метод initWithStyle: reuseIdentifier:. Для ячеек, основанных на nib, этот метод загружает объект ячейки из предоставленного файла nib. Если существующая ячейка была доступна для повторного использования, этот метод вместо этого вызывает метод prepareForReuse.

J

Ответ 2

[[head-slap]] Я идиот! Метод, который я пытался добавить в тело вызова init...

initWithStyle:reuseIdentifier:

... тот, который я должен переопределить!

Нашел его здесь...

Настройка стиля UITableViewCell при использовании iOS 6 UITableView dequeueReusableCellWithIdentifier: forIndexPath:

Голосование, чтобы закрыть мой собственный вопрос. Надеюсь, что краткость этого поможет другим избежать чтения лишних деталей в другом.