Подтвердить что ты не робот

UITableView четкие данные

Как очистить все данные таблицы и перезагрузить с помощью нового?

4b9b3361

Ответ 1

Удалите данные перед вызовом reloadData, и теперь пользователь увидит, что таблица очищается и повторно заполняется свежими данными.

myArray = nil;
[myTableView reloadData];

Ответ 2

использовать [tableView reloadData] метод в представлении таблицы ui

Ответ 3

Это был мой wrok, вокруг которого работало. set cell = nil;

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell = nil;

Ответ 4

Кстати, clearsContextBeforeDrawing является свойством, а

[cell.contentView clearsContextBeforeDrawing];

ничего не делает, кроме как вернуть его значение.

Ответ 5

ok.. но.. нам нужно решение для этого. Если мы добавим ячейки во время выполнения, я получил вывод с теми же ячейками в первой и последней ячейках uitableview.

вы можете очистить ячейку, прежде чем добавлять какие-либо подзаголовки

Пример:

[mytableview.contentView clearsContextBeforeDrawing]; 

Ответ 6

Вы можете посмотреть значение повторно используемой ячейки и, если это не то же самое, - затем воссоздать ее.

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyLog(@"Start Table: cellForRowAtIndexPath: %d", indexPath.row);

NSString *MyIdentifier = [NSString stringWithFormat:@"MyIdentifier %i", indexPath.row];
UILabel *lblNew;
lblNew = [UILabel new];
UILabel *lblCell;
lblCell = [UILabel new];

MyTableCell *cell = (MyTableCell *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier];

if (cell == nil) 
{
    cell = [[[MyTableCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
    [cell.contentView addSubview:[lblNameArray objectAtIndex:indexPath.row]];       
} 
else 
{
    lblNew = [lblNameArray objectAtIndex:indexPath.row];
    for (id label in [cell.contentView subviews])   
    {
        if ([label isKindOfClass:[UILabel class]]) 
        {
            lblCell = label;
        }
    }
    if (![lblNew.text isEqualToString:lblCell.text])
    {
        cell = [[[MyTableCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
        [cell.contentView addSubview:[lblNameArray objectAtIndex:indexPath.row]];
    }
}
return cell;

Ответ 7

Swift: не уверен, что это лучший способ или нет, но я использую этот код для очистки и загрузки данных:

fileprivate func clearTable() {
    self.tableviewData.removeAll(keepingCapacity: false)
    self.tableView.reloadData()
}

Ответ 8

У меня были двойные записи при выборе после прокрутки. Теперь дисплей так же чист, как ожидалось! Используется обходной путь

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell = nil;

а также (btw: cleararsContextBeforeDrawing как автономный он не работает

[cell.contentView clearsContextBeforeDrawing]; 

в Simulator у меня создается впечатление более точной реакции на выбор клеток. Спасибо!