Есть ли способ узнать, когда UITableView закончил запрашивать данные из своего источника данных?
Ни один из методов viewDidLoad/viewWillAppear/viewDidAppear связанного контроллера представления (UITableViewController) здесь не используется, поскольку все они запускаются слишком рано. Ни один из них (вполне понятно) не гарантирует, что запросы к источнику данных закончатся (например, пока прокрутка будет прокручена).
Обходной путь, который я нашел, заключается в вызове reloadData в viewDidAppear, поскольку, когда reloadData возвращает, представление таблицы, как гарантируется, завершает запрос источника данных столько, сколько ему нужно.
Однако это кажется довольно неприятным, так как я полагаю, что он дважды запрашивает одну и ту же информацию о источнике данных (один раз автоматически и один раз из-за вызова reloadData) при первом загрузке.
Причина, по которой я хочу сделать это, заключается в том, что я хочу сохранить положение прокрутки UITableView, но вплоть до уровня пикселя, а не только до ближайшей строки.
При восстановлении позиции прокрутки (используя scrollRectToVisible:animated:) мне нужно, чтобы в представлении таблицы уже было достаточно данных, иначе вызов метода scrollRectToVisible:animated: ничего не делает (что происходит, если вы поместите вызов на свой принадлежит в любом из viewDidLoad, viewWillAppear или viewDidAppear).
