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

UITableView удаляет все строки сразу

Как можно удалить все строки из 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;
}

Спасибо.

4b9b3361

Ответ 1

Сделайте это.

Прежде чем перезагружать таблицу с помощью

[tableView reloadData];

Удалите все объекты из массива tableView (массив, который заполнил ваш tableView) Например.

[myArray removeAllObjects];
[tableView reloadData];

Ответ 2

Удалите все ваши dataSource, затем вызовите reloadData.

Ответ 3

FYI, Решение выше "Удалите весь ваш источник данных, а затем вызовите reloadData". звучит так, будто они отстаивают это:

TableView.dataSource = nil;
[TableView reloadData];

Я попробовал это, и он, похоже, сработал. Кроме того, в iOS 8.1 я получил случайные сбои. И я имею в виду случайный, как и в, я мог бы выполнить этот код 10x, и он потерпит крах 1x. Итак, я использовал рекомендуемый ответ:

[myArray removeAllObjects];
[tableView reloadData];

и теперь я хорошо.

Ответ 4

Похоже, вы не очищаете свою коллекцию данных (NSArray) перед добавлением дополнительных данных. UITableView обычно отображает все данные вашего массива. Если вам не нужны предыдущие строки/данные, вы должны очистить свой массив до добавления к нему новой информации. Затем вызовите [yourTableView reload]

Ответ 5

сначала удалите старые данные

myArray = nil;
[tableView reloadData];

затем загрузите новые данные

myArray = newData;
[tableView reloadData];