Я пытаюсь очистить UITableView. Прежде всего, я попытался очистить [self.tableView reloadData]; listOfPosts = nil
, но tableView все еще показывает 10 строк. Затем я попытался удалить строку за строкой, но результат был таким же.Не удается удалить строки - UITableView iOS 7
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
NSLog(@"Number of sections: %i", [self.tableView numberOfSections]); // => 1
NSLog(@"Number of rows in section 0: %i", [self.tableView numberOfRowsInSection:0]); // => 10
[self.tableView beginUpdates];
NSMutableArray *rowsToDelete = [[NSMutableArray alloc] init];
int nPosts = [self.tableView numberOfRowsInSection:0];
for (int i = 0; i < nPosts; i++) {
[rowsToDelete addObject:[NSIndexPath indexPathForRow:i inSection:0]];
}
currentPostList = nil;
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithArray:rowsToDelete] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
[self.tableView reloadData];
NSLog(@"Rows after endUpdates: %i", [self.tableView numberOfRowsInSection:0]); // => 0
NSLog(@"Visible rows: %i", [[self.tableView visibleCells] count]); // => 0
// But the tableView still show 10 rows
}];
PD: Я использую UITableViewController так self.tableView генерируется автоматически
(я извиняюсь за мой плохой английский)
Вам не нужно, чтобы * оба * анимировали ваши изменения * и * перезагрузили таблицу. Что произойдет, если вы удалите тот или другой (но не оба)? –
Если я комментирую '[self.tableView reloadData]' Я получаю тот же результат. То же самое с '[self.tableView beginUpdates] ... [self.tableView endUpdates]' – masipcat
Удивительно, может ли это быть связанным с блоком shenanigans с 'currentPostList'. Что, если вы поместите весь код в блок в новый метод (скажем, '-clearTable') и вызовите это из блока (' [self clearTable] ')? –