У меня просто быстрый вопрос с рекомендациями относительно пользовательских ячеек в UITableView.
Моя проблема возникает при создании пользовательской ячейки в блоке if (cell == nil) в
- (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
(1) Если я создаю метки и устанавливаю их текстовое свойство внутри блока (cell == nil); только ячейки, видимые на экране, будут содержать правильный текст, остальные просто будут использованы повторно.
(2) Хорошо, поэтому я пытаюсь переместить здание пользовательской ячейки за пределы блока. Это, конечно, приводит к тому, что мои ячейки перерисовываются снова и снова каждый раз, когда пользователь прокручивает… и друг над другом.
(3) Я также попытался поместить чертеж пользовательской ячейки (метки, графику и т. Д.) В блок (cell == nil), но установил свойство label.text после блока. Это не может быть сделано как мой
UILabels тогда не может быть доступен извне блока, в котором они были созданы. Я мог бы сойти с ума (UILabel * l в cell.contentView.subviews), но для этого потребовался бы оператор if для каждой метки и, возможно, некоторые теги для их идентификации. с.
(4) Затем я мог бы объявить все свои метки перед блоком (cell == nil), а затем просто создать экземпляр и нарисовать внутри блока и установить свойство text после блока (cell == nil). Но когда я прошел 10 UIlabels, это выглядит и выглядит очень грязно, так как они растекаются внутри и снаружи блока (cell == nil), плюс они будут объявляться каждый раз, когда таблица должна «обновляться».
Причина, по которой я спрашиваю, заключается в том, что при использовании 2-4 меток я всегда находил способ обойти это, но на этот раз мне нужно настроить 12 пользовательских UILabels, и я хотел бы сделать это так, чтобы мне пришлось перерисовывать наименьшее количество графики, так как, вероятно, будет много ячеек.
Я видел примеры, когда люди и документы Apple используют:
- (void) configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
Но я не могу понять, как это могло бы мне помочь:)
Надеюсь, кто-то может указать на "лучшую практику" для такого рода вещей.
Спасибо!