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