В некоторых случаях в моих табличных ячейках изображение добавляется в ячейку. Мои ячейки отображаются неправильно. Вот картина того, что я имею в виду:UITableView, отображающий фантомную ячейку
Значок второй замок не принадлежит там ... я не уверен, как и почему ее в конечном итоге там. В этом примере массив имеет счетчик 2, поэтому дополнительная блокировка даже не внутри ячейки.
Это никогда не происходит при начальной нагрузке, но происходит, как только ячейки перезагружаются в первый раз. Это также меня смущает, потому что начальная функция загрузки такая же, как функция перезагрузки.
Вот код для самой клетки:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [UITableViewCell configureFlatCellWithColor:[UIColor greenSeaColor] selectedColor:[UIColor wetAsphaltColor] reuseIdentifier:CellIdentifier inTableView:(UITableView *)tableView];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
[cell configureFlatCellWithColor:[UIColor greenSeaColor] selectedColor:[UIColor wetAsphaltColor]];
}
Room *room;
//is data filtered?
if(isFiltered)
room = [filteredTableData objectAtIndex:indexPath.row];
else
room = [roomList objectAtIndex:indexPath.row];
cell.textLabel.text = room.roomName;
cell.detailTextLabel.text = room.hostUsername;
//lock icon or not
if(room.password != nil)
{
UIImageView *pw = [[UIImageView alloc] initWithImage:img];
pw.tag = [room.rid integerValue];
[pw setImage:img];
pw.frame = CGRectMake(cell.frame.size.width - cell.frame.size.height, cell.frame.origin.y,
cell.frame.size.height - 2, cell.frame.size.height - 2);
[cell.contentView addSubview:pw];
}
else{ //remove the content view if not needed
[[cell.contentView viewWithTag:[room.rid integerValue]] removeFromSuperview];
}
return cell;
}
Для записи, это не происходит iOS7 (я знаю, что под NDA, но просто хотел бы отметить тот факт, если это помогает).
, что это не фантом клетки. :) это просто проблема с авторезистом-маской; ячейка появится позже, и размер фрейма не определен, когда '-tableView: cellForRowAtIndexPath:' вызывается, и вы помещаете значок блокировки в совершенно неправильное положение. 1) установите координаты _absolute_ для фрейма 'pw' вместо _relative_, ** OR ** 2) правильно установите маску авторезистора для объекта' pw'. – holex