дублирующиеся строки в tableview на uitableviewcell

& & и || были в списке вещей реализовать (все еще), но не открывался как следующая самая полезная вещь добавить. Причина состоит в том, что мы имеем - И и - ИЛИ. Если Вы думаете, что это важно, зарегистрируйте предложение на Подключении, и мы рассмотрим это для V3.

6
задан Srikar Appalaraju 14 June 2011 в 11:57
поделиться

2 ответа

Проблема, с которой вы столкнулись, связана с этой строкой:

[cell.contentView addSubview:label];

Вы добавляете подпредставление в ячейку таблицы, независимо от того, новая это ячейка или нет. Если это старая ячейка (исключенная из очереди повторно используемого пула), вы добавите еще одну подпредставление к ячейке.

Вместо этого вы должны пометить UILabel, а затем найти его с помощью этого тега, чтобы изменить содержимое этого UILabel. Добавьте (и установите все его атрибуты) и пометьте UILabel внутри блока if (cell == nil):

if(cell == nil) {
  // alloc and init the cell view...

  UILabel *label = [[[UILabel alloc] init] autorelease];
  label.tag = kMyTag; // define kMyTag in your header file using #define
  // and other label customizations
  [cell.contentView addSubview:label]; // addSubview here and only here
  ...
}

Затем найдите его с помощью:

UILabel *label = (UILabel *)[cell.contentView viewWithTag: kMyTag];
label.text = [mapareaArray objectAtIndex:indexPath.row];

И нет необходимости повторно добавлять его как подпредставление вне if (ячейка == ноль) блок. Подпредставление уже существует (и поэтому повторное использование представлений ячеек намного эффективнее, если вы все сделаете правильно, то есть;).

11
ответ дан 9 December 2019 в 20:46
поделиться

.h файл 'Define' помещается после операторов #import в верхней части файла заголовка и имеет значение 0, потому что я не знаю, как еще его определить:

#define kMyTag 0

.m файл Я обновил этот раздел в соответствии с вашими комментариями, но а) таблица не заполнена, б) когда пользователь перешел к следующему представлению и вернулся к этому представлению, происходит сбой с «неопознанным селектором, отправленным экземпляру», и c ) Пришлось вставить две "возвратные ячейки"; записи или он падает. Я думаю, что у меня есть вещи в неправильном порядке и, возможно, я неправильно инициализировал их ????

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) 
    {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        cell.selectionStyle = UITableViewCellSelectionStyleNone;

        UILabel *label = [[[UILabel alloc] init] autorelease];
        label.tag = kMyTag; // define kMyTag in your header file using #define
        label.font = [UIFont fontWithName:@"Arial-BoldMT" size:20];
        label.frame = CGRectMake(10.0f, 10.0f, 220.0f, 22.0f);
        label.textColor = [UIColor blackColor];
        label.backgroundColor = [UIColor clearColor];
        label.opaque = NO;

        CustomCellBackgroundView *bgView = [[CustomCellBackgroundView alloc] initWithFrame:CGRectZero];
        bgView.borderColor = [UIColor clearColor];
        bgView.fillColor = [UIColor whiteColor];
        bgView.position = CustomCellBackgroundViewPositionSingle;
        cell.backgroundView = bgView;

        [cell.contentView addSubview:label]; // addSubview here and only here
        return cell;
    }
UILabel *label = (UILabel *)[cell.contentView viewWithTag: kMyTag];
label.text = [mapareaArray objectAtIndex:indexPath.row];
return cell;
}
1
ответ дан 9 December 2019 в 20:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: