UITableView очистить данные - PullRequest
10 голосов
/ 31 августа 2009

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

Ответы [ 8 ]

25 голосов
/ 13 декабря 2010

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

myArray = nil;
[myTableView reloadData];
3 голосов
/ 15 сентября 2011

Это была моя работа, вокруг которой работал. установить ячейку = ноль;

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell = nil;
3 голосов
/ 31 августа 2009

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

1 голос
/ 20 августа 2013

Кстати, clearsContextBeforeDrawing это свойство, а

[cell.contentView clearsContextBeforeDrawing];

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

0 голосов
/ 28 октября 2017

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

fileprivate func clearTable() {
    self.tableviewData.removeAll(keepingCapacity: false)
    self.tableView.reloadData()
}
0 голосов
/ 31 июля 2012

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

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

, а также (btw: clearsContextBeforeDrawing как автономный вариант, он не работал

[cell.contentView clearsContextBeforeDrawing]; 

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

0 голосов
/ 02 апреля 2011

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

(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;
0 голосов
/ 30 ноября 2010

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

Вы можете очистить ячейку перед добавлением подпредставлений

Пример:

[mytableview.contentView clearsContextBeforeDrawing]; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...