Очистить NSMutableArray для обновления
У меня есть пара NSMutableArrays
, которую нужно очистить при обновлении представления. Однако, когда я пытаюсь очистить их с помощью [array removeAllObjects];
, мой столбец падает из-за index beyond bounds error
. Все, что я делаю с обновлением, очищает массивы и вызывает ту же функцию, что и в viewDidLoad для заполнения таблицы. [tableView reloadData]
не вызывается до самой последней строки метода.
EDIT: Очень вероятно, что проблема такова: я использую pull для обновления внешней библиотеки, а когда вы просматриваете и отпускаете таблицу, она отскакивает назад, и, таким образом, UITableView пытается загрузить следующую ячейку, потому что массив очищается, и он все еще загружается.
Ответ: removeAllObjects из массивов, немедленно сделайте self.tableView reloadData, а затем продолжите с остальными.
Ответы
Ответ 1
проблема может быть вызвана тем, что numberOfRowsInSection
возвращает некоторый счет, а ваш массив источников данных пуст.
просто вызовите [array removeAllObjects]
и в numberOfRowsInSection
return [array count]
.
Я надеюсь, что это решит вашу проблему. Лучшее из удачи!!!
Ответ 2
Я удаляю ячейки из представления таблицы в следующем виде -
NSMutableArray* indexPathsToDelete = [[NSMutableArray alloc] init];
for(unsigned int i = 0; i < [self.array count]; i++)
{
[indexPathsToDelete addObject:[NSIndexPath indexPathForRow:i inSection:0]];
}
[self.tableView beginUpdates];
[self.array removeAllObjects];
[self.tableView deleteRowsAtIndexPaths:indexPathsToDelete withRowAnimation:UITableViewRowAnimationLeft];
[self.tableView endUpdates];
[indexPathsToDelete release];
Ответ 3
Когда вы обновляете свой массив, сначала проверьте, есть ли у него объект или нет, а затем повторно инициализируйте свой массив и отпустите его.
Ответ 4
То, что я сделал, было
[array removeAllObjects];
затем позвоните
[self.tableview reloadData];