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