Как определить, будет ли ячейка, возвращаемая dequeueReusableCellWithIdentifier, повторно использоваться в iOS 6?

Я добавляю элементы (например, распознаватели жестов, subviews) к ячейкам в cellForRowIndexPath. Я не хочу добавлять их, если ячейка повторно используется (предположительно), так есть ли способ легко сказать, является ли ячейка новой или используется повторно?

Прототип ячейки определен в раскадровке.

Я не использую пользовательский подкласс для ячейки (похоже, излишний). Я использую тег ячейки, чтобы идентифицировать subviews, поэтому не могу использовать это.

Я мог бы использовать подход до iOS 6, но, конечно, есть лучший способ сделать что-то настолько простое?

Я не мог найти что-либо в Интернете, так что боюсь, что меня что-то смутит, но найти его сложно.

2 Solutions collect form web for “Как определить, будет ли ячейка, возвращаемая dequeueReusableCellWithIdentifier, повторно использоваться в iOS 6?”

Самый простой способ справиться с этим – проверить наличие вещей, которые вам нужно добавить.

Итак, предположим, что ваша ячейка нуждается в подсмотре с тегом 42, если она еще не присутствует.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"]; UIView *subview = [cell viewWithTag:42]; if (!subview) { ... Set up the new cell } else { ... Reuse the cell } return cell; } 

Вероятно, это избыток по сравнению с использованием подхода pre-iOS6 (без зарегистрированного класса), но если вы действительно хотите придерживаться этого, вы можете использовать связанные объекты .

 #import <objc/objc-runtime.h> static char cellCustomized; ... -(UITableViewCell *)getCell { UITableViewCell *cell = [tableView dequeueReusableCellForIdentifier:myCell]; if(!objc_getAssociatedProperty(cell, &cellCustomized)) { [self setupCell:cell]; objc_setAssociatedProperty(cell, &cellCustomized, @YES, OBJC_ASSOCIATION_RETAIN_NONATOMIC); } return cell; } ... 

(не испытано)

  • Как поймать конец анимации в deleteRowsAtIndexPaths
  • «неожиданно найдено нуль» для поиска в UITableView
  • insertRowsAtIndexPaths, вызывающий cellForRowAtIndexPath для каждой строки
  • Показать разделитель только для доступного CellForRow в UITableView
  • Цвет чередует UITableViewCell в UITableView?
  • Несколько таймеров в UITableViewCell (Swift)
  • Конкретный / полный пример использования NSPrivateQueueConcurrencyType?
  • Как переопределить tableView: titleForHeaderInSection: настроить заголовки секций статических UITableViews?
  • Негативная временная метка получает неправильный список сообщений
  • Обновить тег после удаления строки в виде таблицы
  • В чем преимущество использования статической NSString для CellIdentifier?
  • Interesting Posts

    Как открыть экран настроек клавиатуры программно в iOS 10?

    Есть ли способ найти размер шрифта и рамки заголовка UINavigationBar?

    Использование разных режимов, таких как «Scale To Fill», «Aspect Fit», «Aspect Fill» для управления UIImageView внутри UITableViewCell

    Эффект блеска iPhone xcode 4.1

    Навигация и панель вкладок отсутствуют при представлении контроллера представления

    UITableViewCell пропущен в цепочке ответчиков

    Как заставить этот код не повторять один и тот же цвет? стриж

    Как узнать максимальное значение для Int в Swift

    Изменить UIImage renderingMode из файла раскадровки / xib

    Ошибка входа в систему Google через Azure

    Быстрый уровень оптимизации «Самый быстрый» разбивает сортировку массива

    Настройка ячейки таблицы в ABPeoplePickerNavigationController

    Как правильно позиционировать изображение UIScrollView при переключении ориентации?

    Пользовательский дизайн для оповещения о вызове iOS

    бороться, чтобы понять значение, byValue CABasicAnimation, ios

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.