Как очистить все данные таблицы и перезагрузить с помощью нового?
UITableView четкие данные
Ответ 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 у меня создается впечатление более точной реакции на выбор клеток. Спасибо!