Сбой UITableView reloadData во время прокрутки

#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 в другой поток, но я прочитал несколько статей, в которых говорилось, что этого делать не следует. Это простое решение, но мне оно не кажется подходящим, учитывая пользовательский опыт. :-