Ответ 1
Сделайте это.
Прежде чем перезагружать таблицу с помощью
[tableView reloadData];
Удалите все объекты из массива tableView (массив, который заполнил ваш tableView) Например.
[myArray removeAllObjects];
[tableView reloadData];
Как можно удалить все строки из UITableView сразу? Поскольку, когда я перезагружаю представление таблицы новыми данными, я все еще вставляю новые строки:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
CustomTableViewCell *cell = (CustomTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[CustomTableViewCell alloc] initWithFrame:CGRectZero] autorelease];
}
//... setting the new cell here ...
return cell;
}
Спасибо.
Сделайте это.
Прежде чем перезагружать таблицу с помощью
[tableView reloadData];
Удалите все объекты из массива tableView (массив, который заполнил ваш tableView) Например.
[myArray removeAllObjects];
[tableView reloadData];
Удалите все ваши dataSource
, затем вызовите reloadData
.
FYI, Решение выше "Удалите весь ваш источник данных, а затем вызовите reloadData". звучит так, будто они отстаивают это:
TableView.dataSource = nil;
[TableView reloadData];
Я попробовал это, и он, похоже, сработал. Кроме того, в iOS 8.1 я получил случайные сбои. И я имею в виду случайный, как и в, я мог бы выполнить этот код 10x, и он потерпит крах 1x. Итак, я использовал рекомендуемый ответ:
[myArray removeAllObjects];
[tableView reloadData];
и теперь я хорошо.
Похоже, вы не очищаете свою коллекцию данных (NSArray
) перед добавлением дополнительных данных. UITableView
обычно отображает все данные вашего массива. Если вам не нужны предыдущие строки/данные, вы должны очистить свой массив до добавления к нему новой информации. Затем вызовите [yourTableView reload]
сначала удалите старые данные
myArray = nil;
[tableView reloadData];
затем загрузите новые данные
myArray = newData;
[tableView reloadData];