#objective-c #uitableview #crash #scroll #reloaddata
#objective-c #UITableView #сбой #прокрутка #reloadData
Вопрос:
У меня есть UITableView с кнопкой обновления на панели инструментов. Если просмотр таблицы остановлен, и я нажимаю кнопку обновления, вызывая reloadData
, все работает нормально. Но если я прокручиваю tableview и нажимаю кнопку обновления до остановки tableview, приложение вылетает с этим сообщением:
-[NSMutableArray objectAtIndex:]: index 31 beyond bounds for empty array'
Я думаю, что при прокрутке приложение пытается создать ячейку, считывающую reloadData
очищенный массив.
Я пытаюсь остановить прокрутку раньше reloadData
, но это не работает. Есть идеи?
Комментарии:
1. Я решил использовать другой массив в источнике данных и сделать копию для reloaddata.
Ответ №1:
Это явно не решение этой проблемы, поскольку вы не опубликовали никакого кода!
Но я хотел бы знать, почему вы хотели бы обновить данные во время прокрутки? С точки зрения удобства использования я не думаю, что пользователи тоже будут это делать. Я предполагаю, что вы просто тестируете представление в определенных случаях, чтобы ваше приложение не зависало!
Я бы посоветовал вам сделать UIButton
неактивным, когда он прокручивается во время прокрутки TableView.
myButton.enabled = NO;
// after scrolling you can set it to YES.
Я действительно не верю, что пользователи захотят обновить таблицу во время tableView
прокрутки, и если они случайно нажмут на нее, я думаю, что этот небольшой фрагмент кода исправит проблему.
Комментарии:
1. Является ли это приемлемым решением этой проблемы? Я пытался переместить reloadData в другой поток, но я прочитал несколько статей, в которых говорилось, что этого делать не следует. Это простое решение, но мне оно не кажется подходящим, учитывая пользовательский опыт. :-