При регистрации UITableViewCell для повторного использования, какой метод init в этой ячейке вызван?
Я пытаюсь использовать собственный подкласс UITableViewCell
со стилем, установленным в UITableViewCellStyleSubtitle
, и использовать его с registerClass:forCellReuseIdentifier:
. Однако я не уверен, как это сделать.
Мое мышление состояло в том, чтобы переопределить метод init
и вызвать
self = [super initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:myReuseIdentifier];
внутри него. Тем не менее, я не могу понять, какой метод init
вызывается (или если это даже правильный способ сделать это.)
Я попытался перехватить все следующие методы init, но ни один из них не кажется правильным при удалении ячейки:
-
init
-
initWithCoder
-
initWithFrame
Я подтвердил, что dequeueReusableCellWithIdentifier:forIndexPath:
возвращает ячейку правильного типа, поэтому я знаю, что он создается. Я просто не знаю, какой метод init
вызывается, поэтому я не могу установить стиль по умолчанию.
Ответы
Ответ 1
Я считаю, что он вызывает initWithStyle: reuseIdentifier: для инициализации ячейки таблицы.
Из документов Apple
dequeueReusableCellWithIdentifier:
Если вы зарегистрировали класс для указанного идентификатора и создать новую ячейку, этот метод инициализирует ячейку, вызывая ее метод initWithStyle: reuseIdentifier:. Для ячеек, основанных на nib, этот метод загружает объект ячейки из предоставленного файла nib. Если существующая ячейка была доступна для повторного использования, этот метод вместо этого вызывает метод prepareForReuse.
J
Ответ 2
[[head-slap]] Я идиот! Метод, который я пытался добавить в тело вызова init...
initWithStyle:reuseIdentifier:
... тот, который я должен переопределить!
Нашел его здесь...
Настройка стиля UITableViewCell при использовании iOS 6 UITableView dequeueReusableCellWithIdentifier: forIndexPath:
Голосование, чтобы закрыть мой собственный вопрос. Надеюсь, что краткость этого поможет другим избежать чтения лишних деталей в другом.